Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

gleichzeitiger Zugriff auf Datei | Herbers Excel-Forum

Forumthread: gleichzeitiger Zugriff auf Datei

gleichzeitiger Zugriff auf Datei
28.01.2010 21:51:58
Armin

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

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:01:58
JDommi
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"
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:11:16
Armin
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
Anzeige
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:16:43
JDommi
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.
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:11:53
JDommi
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

Anzeige
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:21:25
MichaV
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.
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:33:08
Armin
Hallo Micha,
vielen Dank. Hättest Du dafür ein paar Code-Zeilen parat?
Viele Grüße und vielen Dank
Armin
Anzeige
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:51:59
MichaV
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
Anzeige
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:56:48
Josef Ehrensberger
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
Anzeige
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 22:59:11
MichaV
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
AW: gleichzeitiger Zugriff auf Datei
28.01.2010 23:26:54
Josef Ehrensberger
Hallo Micha,
lässt sich ja schlecht testen, aber es dürfte keine Fehlermeldung kommen.
Gruß Sepp
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige