7.2 Wie kann ich feststellen, ob eine Datei bereits geöffnet ist?
VB4-VB6
Von: Tobias Schikora [Home]
Es gibt keine universelle und eindeutige Möglichkeit herauszufinden, ob eine Datei bereits vom Betriebssystem oder anderen Programmen geöffnet ist. Eine leider etwas unsaubere Möglichkeit besteht aber dennoch. Öffnen Sie dazu die zu überprüfende Datei mit dem Open- Befehl und werten Sie die Eigenschaft "Number" des Err- Objektes aus. Hier ein Ansatz:
Private Sub Command1_Click()
Dim Datei As String
Dim ff As Integer
Datei = "c:\textdatei.doc"
ff = FreeFile()
On Error Resume Next
Open Datei For Binary Lock Read Write As #ff
Select Case Err.Number
Case 0 ' Kein Fehler
MsgBox "Die Datei ist noch nicht exklusiv geöffnet.", _
vbInformation, "Dateizugriff"
Case 55, 70 ' 55 - "Datei bereits geöffnet" _
70 - "Zugriff verweigert"
MsgBox "Die Datei ist bereits exklusiv geöffnet.", _
vbInformation, "Dateizugriffsfehler"
Case Else ' Anderer Fehler
MsgBox CStr(Err.Number) & " - " & Err.Description, _
vbInformation, "Unerwarteter Fehler"
End Select
Close #ff
End Sub
Dieses Vorgehen hat leider einen weiteren Haken, denn es funktioniert nur zuverlässig, wenn die angegebene Datei exklusiv geöffnet wurde, wie zum Beispiel beim Öffnen der Datei in Word. Wird eine Datei z.B. in Notepad geöffnet, lässt sich nicht feststellen, ob die Datei bereits geöffnet ist.