Überprüfen ob Datei offen, ohne Datei anzulegen

Hallo, ich bin neu hier, hab in letzter Zeit viel über VBA (Excel 2002) gegooglt und hab hier immer gute Antworten gefunden.
Jetzt steht ich das erste Mal vor einem Problem das ich mir nicht ergoogeln konnte.

Kurz zu mir: VBA seit ca. 4 Monaten wöchentlich autodidakisch, dadurch Grundlagen solala.

Zu meiner Frage: Ich hab mittlerweile ein komplexes Tool erstellt welches eine Datei X öffnet (mehrere Sheets) dort ein neues Sheeteinfügt und dieses dann anhand einer vorgegebenen Variablenliste die jeweiligen Spalten aus den anderen Sheets zusammenkopiert. Dies dann in einer neuen Datei Y speichert und die Orginaldatei nicht verändert. Momentan bin ich an der Fehlerbehebung.

Problem: Ich suche nach einer Schreibweise wie ich überprüfen kann ob die Datei X bereits geöffnet ist, wenn ja Abbruch und Meldung an den User. Hierfür hab ich bereits eine Lösung gefunden (Code steht unten). Allerdings erstellt dieser eine Datei mit dem gesuchten Namen, wenn Sie nicht vorhanden ist. Dadurch funktioniert meine Abfrage beim Speichern nicht mehr (es kommt jedesmal das Popup die Datei Y ist schon vorhanden soll sie überschrieben werden.)

Nun meine Frage: Gibt es auch andere Möglichkeiten herauszufinden, ob die Datei X noch geöffnet ist?

Vielen Dank für die Hilfe

Flow1224

Der Code:

Public Function Ist_Datei_Geoeffnet(speichernAdresse)

Dim FNr As Long
Dim FName As String

FName = speichernAdresse
On Error Resume Next
FNr = FreeFile
Open FName For Binary Access Read Lock Read Write As #FNr

If Err.Number 0 Then
Call MsgBox(„Die Datei kann nicht geöffnet werden.“ & vbNewLine & „Bitte überprüfen Sie folgende Punkte:“ & vbNewLine & vbNewLine & „- ist die Datei bereits geöffnet“ & vbNewLine & „- stimmt der angegebene Pfad (Schreibfehler)“ & vbNewLine & vbNewLine & „treffen diese Punkte nicht zu, laden Sie bitte die Quelldatei erneut.“)
Ist_Datei_Geoeffnet = True
Else
Ist_Datei_Geoeffnet = False
Close #FNr
End If
On Error GoTo 0

End Function

Hallo Flow,

ich habe jetzt deinen Code nicht genau angeschaut.

Baue das ein, dann kannst du die Boolean-Variable Vorh auswerten:

Dim Vorh As Boolean, wkb As Workbook
For Each wkb In Workbooks
 If wkb.Name = "xyz.xls" Then
 Vorh = True
 Exit For
 End If
Next wkb

Gruß
Reinhard