Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

gleichzeitiger Zugriff auf Datei | Herbers Excel-Forum


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 Sub
Es 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.


Gruss- Micha


  

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.

Sub txt()
  Dim strFile As String
  Dim ff As Integer
  Dim zaehler As String
  
  strFile = "E:\Temp\zugriff.txt"
  ff = FreeFile
  
  Open strFile For Input Shared As #ff
  Input #ff, zaehler
  Close #ff
  
  zaehler = CStr(Cint(zaehler + 1))
  
  ff = FreeFile
  
  Open strFile For Output Shared As #ff
  Print #ff, zaehler
  Close #ff
  
End Sub



Gruß Sepp



  

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.


Gruß Sepp



Beiträge aus den Excel-Beispielen zum Thema "gleichzeitiger Zugriff auf Datei"