Ich hatte vor einigen Jahren das gleiche Problem, als ich versuchte, eine Netzwerkdatei aus dem Ausland zu öffnen. Wenn jemand es bereits geöffnet hatte, versuchte Excel, es für einige Minuten zu öffnen, bevor es behauptet wurde.
Ich habe den folgenden Code verwendet, der Sid-Code hier sehr ähnlich ist .
Der Code versucht, in eine Datei C; \ mywork.xls zu schreiben (ändern Sie den Dateipfad in die Farbe ). Falls ein Fehler auftritt, ist die Datei bereits geöffnet, andernfalls wird die Datei geöffnet. Die Fehlerprüfung erfolgt sofort und nicht zeitverzögert.
Sub Sample() Dim Ret Dim Wb As Workbook Dim strFile As String styrfile = "C:\myWork.xlsx" Ret = IsWorkBookOpen(strFile) If Ret = True Then MsgBox "File is open" Else Set Wb = Workbooks.Open(strFile) End If End Sub Function IsWorkBookOpen(FileName As String) Dim ff As Long, ErrNo As Long On Error Resume Next ff = FreeFile() Open FileName For Input Lock Read As #ff Close ff ErrNo = Err On Error GoTo 0 Select Case ErrNo Case 0: IsWorkBookOpen = False Case 70: IsWorkBookOpen = True Case Else: Error ErrNo End Select End Function