Es ist schon sehr merkwürdig.
Mit Hilfe eines kurzen Makros und einer dazugehörigen Funktion überprüfe ich, ob bestimmte Dateien im Netzwerk von einem beliebigen User geöffnet sind oder nicht.
Hier meine verwendeten Makros:
Sub TestFileOpened()
' Prüfen, ob die Datei bereits geöffnet ist.
If IsFileOpen("filename.xls") Then
' Meldung anzeigen, die angibt, dass die Datei bereits
' verwendet wird.
MsgBox "Datei bereits geöffnet!"
' Hier Code für den Fall hinzufügen, dass die Datei von einem
' anderen Benutzer geöffnet ist.
Else
' Meldung anzeigen, die angibt, dass die Datei nicht geöffnet ist.
MsgBox "Datei nicht geöffnet!"
' Datei in Microsoft Excel öffnen.
Workbooks.Open "filename.xls"
' Hier Code für den Fall hinzufügen, dass die Datei NICHT von
' von einem anderen Benutzer geöffnet ist.
End If
End Sub
undFunction IsFileOpen(filename As String)
Dim filenum As Integer, errnum As Integer
On Error Resume Next ' Fehlerprüfung deaktivieren.
filenum = FreeFile() ' Freie Dateinummer besorgen.
' Versuchen, die Datei zu öffnen und zu sperren.
Open filename For Input Lock Read As #filenum
Close filenum ' Datei schließen.
errnum = Err ' Fehlernummer speichern.
On Error GoTo 0 ' Fehlerprüfung reaktivieren.
' Überprüfen, welcher Fehler aufgetreten ist.
Select Case errnum
' Kein Fehler.
' Datei NICHT durch anderen Benutzer geöffnet.
Case 0
IsFileOpen = False
' Fehlernummer für "Zugriff verweigert."
' Datei bereits durch anderen Benutzer geöffnet.
Case 70
IsFileOpen = True
' Ein weiterer Fehler ist aufgetreten.
Case Else
Error errnum
End Select
End Function
Das Bizarre ist, daß die Ausführung des Makros an einem Tag funktioniert, ich aber am nächsten Tag sofort die Meldung "Fehler 53" bzw. "Datei nicht gefunden" bekomme. Ich kann keine Logik erkennen, warum es mal klappt und mal nicht...Könnt Ihr mir einen Tipp geben?Vielen Dank,
Frank