Warten bis andere Datei geschlossen in Excel VBA
Schritt-für-Schritt-Anleitung
Um sicherzustellen, dass eine Excel-Datei erst geöffnet wird, wenn sie von anderen Anwendern geschlossen wurde, kannst Du folgendes VBA-Skript verwenden. Dieses Skript überprüft regelmäßig, ob die Datei geöffnet ist, und wartet gegebenenfalls, bis sie geschlossen wird.
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Erstelle ein neues Modul:
- Klicke mit der rechten Maustaste auf "VBAProject (DeineDatei.xlsm)".
- Wähle "Einfügen" und dann "Modul".
- Füge den folgenden Code in das Modul ein:
Option Explicit
Sub Master_Test_offen()
Dim iOpen As Integer, iCount As Integer
Dim sFile As String
sFile = ThisWorkbook.Worksheets(1).Range("C3").Value
Do
iCount = iCount + 1
iOpen = Test_offen(sFile)
If iOpen <> 1 Then Exit Do
If iCount = 10 Then Exit Do ' Ausstieg nach 10 Versuchen
Application.Wait (Now + TimeValue("0:00:01")) ' Wartezeit zwischen Versuchen
Loop
Select Case iOpen
Case 2
MsgBox "Datei " & sFile & " wurde nicht gefunden"
Case 0
Workbooks.Open sFile
Case 1
MsgBox "Masterdatei ist nach 10 Sekunden immer noch geschlossen"
End Select
End Sub
Private Function Test_offen(sPath As String) As Integer
Dim TestOpen As Integer
TestOpen = 0
If Dir(sPath) = "" Then
TestOpen = 2
Else
On Error GoTo ERRORHANDLER
Open sPath For Random Access Read Lock Read Write As #1
Close #1
End If
ERRORHANDLER:
If Err = 70 Then TestOpen = 1
Test_offen = TestOpen
End Function
Sub Master_schliessen()
On Error GoTo Fehler
Application.CutCopyMode = False
Workbooks("xyz.xlsm").Close True
Fehler:
If Err.Number <> 0 Then
MsgBox "Masterdatei ""xyz.xlsm"" ist nicht mehr geöffnet!"
End If
End Sub
- Stelle sicher, dass der Pfad zur Datei in Zelle C3 korrekt ist.
- Schließe den VBA-Editor und teste das Makro.
Häufige Fehler und Lösungen
Alternative Methoden
Wenn Du die Wartezeit zwischen den Versuchen anpassen möchtest, kannst Du die Application.Wait
-Zeile ändern, um beispielsweise alle zwei Sekunden zu prüfen:
Application.Wait (Now + TimeValue("0:00:02"))
Eine andere Methode ist die Verwendung von DoEvents
, um die Kontrolle an das Betriebssystem zurückzugeben und sicherzustellen, dass Excel weiterhin reagiert.
Praktische Beispiele
Ein praktisches Beispiel könnte das Warten auf eine Datei sein, die von einem Kollegen bearbeitet wird. Stelle sicher, dass Du den Pfad zu der Datei in die Zelle C3 einträgst. Der Code wird dann die Datei öffnen, sobald sie geschlossen wird.
Tipps für Profis
- Nutze
MsgBox
für Benutzerbenachrichtigungen, um Feedback zu geben, wenn die Datei nicht gefunden wird oder wenn der Öffnungsversuch fehlschlägt.
- Füge Logging-Funktionen hinzu, um zu protokollieren, wann und wo Fehler auftreten, um die Fehlersuche zu erleichtern.
FAQ: Häufige Fragen
1. Wie kann ich die Wartezeit zwischen den Prüfungen anpassen?
Du kannst die Application.Wait
-Zeile im Code ändern, um die Wartezeit zwischen den Versuchen zu erhöhen oder zu verringern.
2. Was passiert, wenn die Datei nicht gefunden wird?
Der Code gibt eine Fehlermeldung aus, die besagt, dass die Datei nicht gefunden wurde. Stelle sicher, dass der Pfad korrekt ist.
3. Ist dieser Code in allen Excel-Versionen anwendbar?
Der Code sollte in den meisten modernen Excel-Versionen funktionieren, die VBA unterstützen, wie Excel 2010 und neuer.