Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
Betrifft: gleichzeitiger Zugriff auf Datei
von: Armin
Geschrieben am: 28.01.2010 21:51:58
Hallo,
ich habe ein Excel-Programm entwickelt, welches u.a. Daten in ein Textfile schreibt, siehe folgenden Code:
Open iniDatei For Output As 1
Zaehler = 123
Print #1, Zaehler
Close #1
Dieser Code bewirkt, dass der Zähler bei jeder Ausführung um den Wert 1 erhöht wird.
Nun sollen mehrere User mit dem Programm arbeiten. Es besteht sicherlich die theoretische Möglichkeit, dass zur gleichen Zeit die Daten geschrieben werden, also zur gleichen Zeit der Zähler erhöht wird. Jede theoretische Möglichkeit kann aber natürlich auch in der Praxis eintreten. Trifft Excel, bzw. VBA selbst Vorkehrungen, dass dies nicht eintritt oder muss ich irgendetwas programmtechnisch unternehmen.
Kann mir mit hier jemand weiterhelfen?
Vielen DAnk für euere Tipps
Schöne Grüße
Armin
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: JDommi
Geschrieben am: 28.01.2010 22:01:58
Es kann immer nur einen Vollzugriff auf eine Excel-Datei geben.
Bei jedem weiteren Versuch die Datei zu öffnen kommt die Meldung, daß die datei bereits geöffnet ist.
Es erfolgt dann nur noch die Auswahl zwischen "Schreibgeschützt öffnen", "Meldung, wenn Datei frei" bzw. "Abbruch"
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: Armin
Geschrieben am: 28.01.2010 22:11:16
Hallo,
nein, mit Print kann sogar in eine geöffnete Datei geschrieben werden. Wenn ich die txt-Datei mit dem Editor öffne, dann per VBA (bei geöffneter Datei) die Zählernummer erhöhe, dann ist die neue Zählernummer vorhanden.
Die Frage ist nun, was bei absolut gleichzeitigem Zugriff per VBA passiert.
Viele Grüße
Armin
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: JDommi
Geschrieben am: 28.01.2010 22:16:43
Klar, dann liest du die Datei mit dem Editor aber auch nur ein: Öffne Datei - Lese Datei - Schließe Datei. Der Dateizugriff besteht nicht mehr!
Zweimal die gleiche Exceldatei mit Excel öffnen geht definitiv nicht.
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: JDommi
Geschrieben am: 28.01.2010 22:11:53
By the way: Mit "On Error Goto Fehlerroutine" kannst du auch eine Meldung ausgeben und/oder die Mappe/Excel schliessen.
Sub DeineRoutine On Error Goto Fehlerroutine Open iniDatei For Output As 1 Zaehler = 123 Print #1, Zaehler Close #1 Exit Sub Fehlerroutine: If Workbooks.Count > 1 Then ThisWorkbook.Close savechanges:=False Else Application.Quit End If End Sub
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: MichaV
Geschrieben am: 28.01.2010 22:21:25
Hei Armin,
da kümmert sich das Betriebssystem drum. Du musst beim öffnen der Datei einen evtl. Fehler "kein Zugriff auf Datei" abfangen und es ggf. nach einem DoEvents nochmal versuchen.
Gruss- Micha
PS:JDommi, hier gehts um Textdateien.
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: Armin
Geschrieben am: 28.01.2010 22:33:08
Hallo Micha,
vielen Dank. Hättest Du dafür ein paar Code-Zeilen parat?
Viele Grüße und vielen Dank
Armin
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: MichaV
Geschrieben am: 28.01.2010 22:51:59
Hier mal was ohne Netzwerk. Kann sein das der Errorcode bei "Zugriff verweigert" ein anderer ist, musst Du mal ausprobieren. Hier wird versucht eine bereits offene Datei nochmal zu öffnen, und zwar 10 mal.
Option Explicit
Sub test() Dim k As Integer Open "versuch.txt" For Input As #1 On Error GoTo fehler_beim_oeffnen versuchs_nochmal: Open "versuch.txt" For Random As #2 Close Exit Sub fehler_beim_oeffnen: If Err.Number = 55 And Not k = 10 Then k = k + 1 Resume versuchs_nochmal Else MsgBox Err.Number & ":" & Err.Description End If End SubEs ist halt nur ne grundlegende Überlegung. Entweder Du öffnest die Datei als SHARED, dann können mehrere Benutzer darin schreiben, aber halt nur hintereinander (wenn zwei auf die ms gleichzeitig wollen dann muss einer warten bis der andere fertig ist). Da Du nur einen Wert speichern willst macht das denke ich keinen Sinn, also musst Du die Datei so öffnen das nur einer schreiben kann. Und gleich danach wieder zumachen. Wenn nun ein anderer die für wenige ms geöffnete Datei ebenfalls öffnen will dann gibts ne Fehlermeldung. Also muss der andere ne Weile warten und es nochmal probieren.
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: Josef Ehrensberger
Geschrieben am: 28.01.2010 22:56:48
Hallo Armin,
wenn du den Modus Shared verwendets, sollte es keine Probleme geben.
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: MichaV
Geschrieben am: 28.01.2010 22:59:11
Hallo Sepp,
denke ich bei dem Einzeiler auch. Aber theoretisch könnten doch zwei Benutzer zur wirklich gleichen Zeit schreiben wollen. Oder nehmen wir mal an es werden 10.000 Zeilen geschrieben. Gibts dann nicht eine Fehlermeldung?
Gruss- Micha
Betrifft: AW: gleichzeitiger Zugriff auf Datei
von: Josef Ehrensberger
Geschrieben am: 28.01.2010 23:26:54
Hallo Micha,
lässt sich ja schlecht testen, aber es dürfte keine Fehlermeldung kommen.