Per VBA berprüfen, ob eine Datei geöffnet ist

Hallo.

Wie kann ich in VBA überprüfen, ob im Netzwerk eine Excel Datei schon geöffnet ist?

Ich habe mein Programm auf drei Rechnern.
Hier wird immer wieder bei bestimmten Arbeitsschritten eine weitere Excel Datei (Lagerdaten) für kurze Zeit geöffnet (Makro schreibt Daten hinein), danach wird es wieder geschlossen.

Das Problem, wenn gerade zu der Zeit die Excel Datei von einem Rechner benutzt wird, und der zweite will auch gerade zu dieser Zeit darauf zugreifen, macht mir der zweite eine Sicherungsdatei auf, und dann habe ich das Problem, das ich den Hinweis bekomme, ob er die Date ünberschreiben will.

Wie kann ich also zuerst überprüfen lassen, ob die Datei schon offen ist? (Wenn es offen ist, soll ich einen Hinweis bekommen, das ich es gleich nochmal versuchen soll)

Ich öffne die Datei so:

Lagerdaten = Range(„D19“).Value '(HIer steht, wo sich die Datei befindet)
Workbooks.Open Lagerdaten

Ich danke euch

Hallo,

man könnte versuchen auf die Datei einen Zugriff durchzuführen und die Fehlermeldung abfangen:

Sub Ist\_Datei\_Geöffnet()
 Dim FNr As Long
 Dim FName As String

 FName = "C:\Test.xls"
 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")
 Else
 Close #FNr
 End If
 On Error GoTo 0
End Sub

Wär dies was für Dich?

LG Gerd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo.

Danke, funktioniert super.

Mfg Anton

Etwas erweiterte Version mit Abfrage welche die die Datei ggf. speichert und beendet.
Sub Datei_pruefen_und_schliessen()
'Hilfetext und Kommentare immer mit Hochkomma voran eingeben
'Rufen Sie den VBA Editor mit der Tastenkombination Alt + F11 auf
'Klicken Sie in seiner Menüleiste auf Einfügen > Modul
'Kopieren Sie den gesamten Text von einschl Sub bis End Sub in die Zwischenablage
'Fügen Sie diesen Text im neuen Modul ein.
'Rufen Sie das Makro Datei_pruefen_und_schliessen auf
'Die MsgBox meldungen können auch aus dem Programmcode entfernt werden
'Ersetzen Sie den Dateinamen Test.xls mit Hilfe der Suchen/Ersetzen Funktion durch den Dateinamen Ihrer Datei
Dim Quest As String
On Error GoTo Next1 'Sprungmarke
'Prüfen ob die Datei Test.xls geöffnet ist
Windows(„Test.xls“).Activate 'Wenn sich die Datei Test.xls nicht aktivieren lässt, kommt Fehlermeldung bei Sprungmarke Next1
Quest = MsgBox(„Möchten Sie die Datei Test.xls schließen?“, vbQuestion + vbYesNo, „FRAGE:“) 'Ist die Datei Test.xls geöffnet, kommt die Abfrage bei Sprungmarke Next2 ob gespeichert und beendet werden soll
If Quest = vbYes Then 'Wird die Frage mit Ja beantwortet, dann
On Error GoTo Next2 'Sprungmarke
Workbooks(„Test.xls“).Save 'Datei Test.xls speichern
Windows(„Test.xls“).Close 'Datei Test.xls schließen
End If
If Quest = vbNo Then 'Wird die Frage mit nein beantwortet, dann
MsgBox „Es wurde nichts unternommen!“, vbInformation, „MELDUNG!“
End If
Exit Sub
Next1:
MsgBox „Die Datei Test.xls ist nicht geöffnet!“, vbInformation, „MELDUNG:“
Exit Sub
Next2:
MsgBox „Es ist ein Fehler beim Speichern oder beim Schliessen der Datei Test.xls aufgetreten“, vbCritical, „WARNUNG“
End Sub