MSGBOX: Wer hat die Datei geöffnet?
Schritt-für-Schritt-Anleitung
Um herauszufinden, wer eine Excel-Datei geöffnet hat, kannst du den folgenden VBA-Code verwenden. Dieser prüft, ob die Datei von einem anderen Benutzer geöffnet ist und zeigt den Benutzernamen in einer MsgBox an.
- Öffne die Master-Datei in Excel.
- Füge den folgenden Code in ein Modul ein:
Option Explicit
Sub starte_Datei()
Dim cb As Workbook
Set cb = Workbooks.Open("C:\test.xls")
If cb.ReadOnly = True Then
MsgBox "Datei wird gerade bearbeitet von " & wb.CustomDocumentProperties("user"), vbCritical, "Bitte beachten"
cb.Close False
Else
' Datei kann geöffnet bleiben
End If
End Sub
- Stelle sicher, dass in der Datei
test.xls
die Benutzerinformation gespeichert wird, bevor sie geschlossen wird. Dies kannst du mit dem folgenden Code tun:
Private Sub Workbook_Open()
If ThisWorkbook.ReadOnly Then Exit Sub
ThisWorkbook.CustomDocumentProperties("user") = Environ("Username")
ThisWorkbook.Save
End Sub
- Speichere die Änderungen und teste den Code, um zu sehen, ob der Benutzername korrekt angezeigt wird.
Häufige Fehler und Lösungen
Alternative Methoden
Falls du keine VBA-Lösungen verwenden möchtest, könntest du auch ein externes Tool in Betracht ziehen, das dir zeigt, welche Benutzer auf das Excel-Dokument zugreifen. Eine andere Möglichkeit ist, eine Textdatei zu erstellen, die den Benutzernamen speichert, wenn die Datei geöffnet wird.
Sub starte_Datei()
Dim cb As Workbook
Dim strDatei As String, strUsername
Set cb = Workbooks.Open("C:\Dokumente und Einstellungen\All Users\Dokumente\test2.xls")
strDatei = cb.Path & "\tag.txt"
If cb.ReadOnly = True Then
Open strDatei For Input As #1
Line Input #1, strUsername
MsgBox "Datei wird gerade bearbeitet von " & strUsername, vbCritical, "Bitte beachten"
cb.Close False
Else
Close #1
Open strDatei For Output As #1
Print #1, Environ("Username")
End If
Close #1
End Sub
Praktische Beispiele
-
Beispiel für das Anzeigen des Benutzernamens bei einer MsgBox:
If cb.ReadOnly Then
MsgBox "Die Datei ist gesperrt von: " & wb.CustomDocumentProperties("user"), vbCritical, "Zugriff verweigert"
End If
-
Beispiel für die Speicherung des Benutzernamens in einer Textdatei:
Open "C:\test.txt" For Output As #1
Print #1, Environ("Username")
Close #1
Tipps für Profis
- Achte darauf, dass das Speichern von
CustomDocumentProperties
nur funktioniert, wenn die Datei mit Schreibrechten geöffnet wird.
- Verwende
vbCritical
in MsgBox, um sicherzustellen, dass die Warnung deutlich hervorgehoben wird.
- Teste den Code in einer sicheren Umgebung, bevor du ihn in einer produktiven Umgebung einsetzt.
FAQ: Häufige Fragen
1. Wie kann ich prüfen, ob die Datei von einem anderen Benutzer geöffnet ist?
Du kannst dies tun, indem du den ReadOnly
-Status des Workbooks überprüfst, wie im obigen Beispiel gezeigt.
2. Kann ich den Benutzernamen auch ohne VBA anzeigen?
Eine direkte Anzeige ist ohne VBA nicht möglich, du könntest jedoch eine alternative Methode verwenden, um Benutzerinformationen extern zu speichern.
3. Funktioniert dieser Code in allen Excel-Versionen?
Der bereitgestellte Code sollte in den meisten modernen Excel-Versionen (ab Excel 2007) funktionieren, da er grundlegende VBA-Funktionen nutzt.