Anzeige
Archiv - Navigation
1544to1548
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

Warten bis offene Datei wieder geschlossen

Warten bis offene Datei wieder geschlossen
28.02.2017 14:16:23
Matthias
Hallo zusammen
Ich muss in einem Netzwerk ein Logfile schreiben. Also jedes Mal wenn ein User eine Exceldatei speichert, muss das Logfile geöffnet und gewisse Infos reingeschrieben werden. Nun wäre es natürlich denkbar, dass zwei Leute gleichzeitig auf das Logfile zugreifen.
Wie kann ich eine "Warteschlaufe" hier einbauen? Das Logfile ist ein simples txt-File. Oder gibt es eine andere einfache Variante?
Open sDatei For Append As #1
Print #1, log_user & vbTab & log_name & vbTab & log_infofeld & vbTab & Format(Now, "yyyy-mm-dd")
Close #1
Ich stelle mir so etwas vor wie "Prüfe ob die sDatei schon offen ist, falls ja, warte 1 Sekunde, Loop, Timeout nach 10 Sekunden mit Textausgabe "Bitte später speichern".
Vielen Dank für eure Hilfe
Matthias

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Warten bis offene Datei wieder geschlossen
28.02.2017 16:44:52
Zwenn
Hallo Matthias,
alternativ zur Prüfung auf eine geöffnete Datei kannst Du auch eine "Sperrdatei" schreiben, die Du löschst, wenn sie nicht mehr benötigt wird.
- User 1 stößt den Speichervorgang seiner Exceldatei an
- Es wird geprüft, ob die "Sperrdatei" im Verzeichnis des Logfiles liegt
- Wenn ja, Schleifendurchlauf zum Warten vor erneuter Prüfung
- Wenn nein, schreibt der Rechner von User 1 die "Sperrdatei", Speichert die Exceldatei, führt die Anderungen in der Logdatei durch, speichert sie und löscht die "Sperrdatei" wieder
Wenn ein User 2, User 3, ..., User n seine Exceldatei speichern will, läuft bei ihm das gleiche Prozedere ab.
Das, was ich "Sperrdatei" nenne, kann einfach eine zweite Textdatei sein, die einen bestimmten Namen hat. In der Datei selbst muss gar nix stehen. Es reicht, wenn Du prüfst, ob eine Datei mit diesem Namen im Verzeichnis des Logfiles vorhanden ist.
Viele Grüße,
Zwenn
Anzeige
AW: Warten bis offene Datei wieder geschlossen
28.02.2017 17:05:30
Tino
Hallo,
dies könnte so funktionieren solange diese Logfile Datei mit dem Code geöffnet und beschrieben wird.
Wird diese Datei mit einem Texteditor Bsp. Notepad geöffnet ist diese nicht schreibgeschützt und
es könnte vorkommen das die geschriebenen Daten gelöscht werden!
Sub LogFile()
Dim sPfad$, sInhalt$, F%
Const sTrenner$ = ";"
sPfad = ThisWorkbook.Path & IIf(Right$(ThisWorkbook.Path, 1)  "\", "\", "")
sPfad = sPfad & "Ligfile.txt"
sInhalt = Format(Now, "dd.mm.yy hh:MM:ss")
sInhalt = sInhalt & sTrenner & Environ$("Username")
sInhalt = sInhalt & sTrenner & ThisWorkbook.FullName
On Error Resume Next
Do
Err.Clear
F = FreeFile
Open sPfad For Random Access Read Lock Read Write As #F
Close #F
Loop While Err.Number  0
F = FreeFile
Open sPfad For Append As #F
Print #F, sInhalt
Close #F
End Sub
Gruß Tino
Anzeige
AW: Warten bis offene Datei wieder geschlossen
28.02.2017 17:43:06
Matthias
Vielen Dank euch beiden. Ich habe mir eher so etwas vorgestellt (was hier natürlich noch nicht funktioniert):
Private Function DateiGeoeffnet(sDatei As String) As Boolean
On Error Resume Next
Open sDatei For Binary Access Read Lock Read As #1
Close #1
If Err.Number  0 Then
DateiGeoeffnet = True
Err.Clear
End If
End Function

Do Until DateiGeoeffnet(sDatei) = False
Application.Wait Now + TimeValue("00:00:01")
Loop
AW: Warten bis offene Datei wieder geschlossen
28.02.2017 17:43:38
Matthias
sorry, Haken vergessen (open)...

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige