Excel: Meldung bei geöffneter Datei erstellen
Schritt-für-Schritt-Anleitung
Um eine Meldung anzuzeigen, wenn eine Datei bereits geöffnet ist, kannst du das folgende Makro verwenden:
- Öffne Excel und drücke
ALT + F11
, um den VBA-Editor zu öffnen.
- Klicke auf
Einfügen
> Modul
, um ein neues Modul zu erstellen.
- Kopiere den folgenden VBA-Code in das Modul:
Sub DateiZustand()
Dim Pfad As String
Pfad = "F:\fgk_pl\plw\hotline\nachschubprobleme verbal 2004.xls"
If DateiIstFrei(Pfad) = False Then
MsgBox "Datei ist bereits geöffnet !"
Application.Quit ' Schließt Excel ohne zu speichern
Else
MsgBox "Datei ist z.Zt. nicht geöffnet !"
End If
End Sub
Function DateiIstFrei(sDateiname As String) As Boolean
Dim hFile As Integer
On Error Resume Next
hFile = FreeFile()
Open sDateiname For Random Access Read Lock Read Write As #hFile
If Err Then
DateiIstFrei = False
Else
DateiIstFrei = True
End If
Close #hFile
End Function
- Ersetze den Pfad
F:\fgk_pl\plw\hotline\nachschubprobleme verbal 2004.xls
durch den tatsächlichen Pfad deiner Datei.
- Schließe den VBA-Editor und gehe zurück zu Excel.
- Führe das Makro aus, indem du
ALT + F8
drückst und das Makro DateiZustand
auswählst.
Häufige Fehler und Lösungen
-
Fehler: "Datei nicht gefunden"
Lösung: Überprüfe den angegebenen Pfad und stelle sicher, dass er korrekt ist und die Datei existiert.
-
Fehler: Anwendung schließt nicht
Lösung: Achte darauf, dass du Application.Quit
korrekt geschrieben hast. Es sollte nicht "Applikation.Quitt" sein, da das ein anderes Wort für quitt ist.
-
Fehler: Meldung erscheint nicht
Lösung: Vergewissere dich, dass du das Makro korrekt ausführt und dass die Datei tatsächlich geöffnet ist.
Alternative Methoden
Eine andere Möglichkeit, um zu prüfen, ob eine Datei geöffnet ist, besteht darin, die Workbook
-Objekte zu durchlaufen, wie im ursprünglichen Beitrag von Stan. Hier ist ein Beispiel:
Sub pruefen()
Dim wb As Workbook
For Each wb In Workbooks
If wb.Name = "nachschubprobleme verbal 2004.xls" Then
MsgBox "Datei schon offen."
Exit For
End If
Next
End Sub
Praktische Beispiele
Wenn du mehrere Dateien überprüfen möchtest, kannst du den Pfad und die Dateinamen in eine Liste einfügen und das Makro entsprechend anpassen. Hier ist ein Beispiel:
Sub mehrereDateienPruefen()
Dim dateien As Variant
Dim i As Integer
dateien = Array("nachschubprobleme verbal 2004.xls", "andereDatei.xlsx")
For i = LBound(dateien) To UBound(dateien)
If DateiIstFrei("F:\fgk_pl\plw\hotline\" & dateien(i)) = False Then
MsgBox dateien(i) & " ist bereits geöffnet!"
End If
Next i
End Sub
Tipps für Profis
- Verwende benutzerdefinierte Funktionen: Du kannst die Funktion
DateiIstFrei
anpassen, um weitere Informationen zu protokollieren oder um die Performance zu verbessern.
- Error Handling: Implementiere ein robustes Error Handling, um unerwartete Fehler abzufangen.
- Makros in der Schnellzugriffsleiste: Füge häufig verwendete Makros zur Schnellzugriffsleiste hinzu, um sie schneller auszuführen.
FAQ: Häufige Fragen
1. Was ist ein anderes Wort für quitt?
Das Wort "quitt" kann in diesem Kontext auch als "beenden" oder "schließen" interpretiert werden.
2. Warum funktioniert mein Makro nicht richtig?
Überprüfe die Syntax deiner VBA-Codes und stelle sicher, dass alle Variablen und Pfade korrekt definiert sind. Achte darauf, dass du keine Schreibfehler hast, wie z.B. "Applikation.Quitt" statt "Application.Quit".