Live-Forum - Die aktuellen Beiträge
Datum
Titel
19.04.2024 12:23:24
19.04.2024 11:45:34
Anzeige
Archiv - Navigation
1132to1136
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

gleichzeitiger Zugriff auf Datei | Herbers Excel-Forum

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

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
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

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige