Excel VBA – Wie Sie Dateizugriffe protokollieren
Dieser Beitrag ist ein Teil der VBA Grundlagen Serie.
Wollen Sie wissen wann und von wem eine bestimmte Datei geöffnet wurde? Sie können beim Öffnen dieser Datei einfach das Datum, die Zeit und den Namen des Anwenders in einem separaten Tabellenblatt dieser Datei dokumentieren. In diesem Beitrag zeige ich Ihnen, wie das geht.
Öffnen Sie bitte die Entwicklungsumgebung mit der Tastenkombination ALT+F11
. Wählen Sie nun das Objekt DieseArbeitsmappe
aus. Beim Öffnen der Datei wird die Prozedur Workbook_Open
automatisch durchlaufen.
In der Entwicklungsumgebung können Sie die Eigenschaften des Tabellenblattes so verändern, dass die Sichtbarkeit nur im VBA Editor oder über VBA Code verändert wird. Wenn Sie die Eigenschaft Visible
auf xlSheetVeryHidden
setzen, kann das Blatt von normalen Benutzern nicht mehr eingeblendet werden. Wir nutzen diese Eigenschaft um unser Logblatt vor anderen Benutzern zu verstecken.
Private Sub Workbook_Open() Dim ws As Worksheet Dim lngLastRow As Long Set ws = Worksheets("Log") ws.Visible = xlSheetVeryHidden ' versteckt End Sub
Als Nächstes ermitteln die erste leere Zeile des Blattes.
Private Sub Workbook_Open() Dim ws As Worksheet Dim lngLastRow As Long Set ws = Worksheets("Log") ws.Visible = xlSheetVeryHidden ' versteckt 'Erste leere Zeile bestimmen lngLastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1 End Sub
111 VBA Makros die Ihr Leben leichter machen
Wollen Sie Ihre langweiligen Routineaufgaben loswerden? Möchten Sie Excel an Ihre Bedürfnisse anpassen, Berechnungen automatisieren, eigene Dialogfelder erstellen und vieles mehr? Dieses Buch zeigt Ihnen, wie Sie Ihre Aufgaben schnell und einfach mit VBA erledigen.
Anschließend schreiben wir das Datum, die Zeit und den Benutzernamen in diese Zeile. Danach wird das Workbook gespeichert.
Private Sub Workbook_Open() Dim ws As Worksheet Dim lngLastRow As Long Set ws = Worksheets("Log") ws.Visible = xlSheetVeryHidden ' versteckt 'Erste leere Zeile bestimmen lngLastRow = ws.Cells(Rows.Count, 1).End(xlUp).Row + 1 With ws 'Datum und Zeit protokollieren .Cells(lngLastRow, 1).Value = Format(Now, "DDD, DD.MM.YY hh:mm") 'Benutzernamen protokollieren .Cells(lngLastRow, 2).Value = Application.UserName End With 'Fehlerbehandlung, falls Datei von nicht beschreibbarem Medium geöffnet wird On Error Resume Next ThisWorkbook.Save End Sub
Das Ergebnis sieht wie folgt aus:
Die Beispiel Excel Datei mit dem sofort einsetzbaren Makro und 111+ andere Makros, die Ihr Leben leichter machen, finden Sie hier.
Beeindrucke deinen Chef mit coolen Excel Tricks!
- Lasse dich von deinen Kollegen nicht abhängen!
- Spare Zeit und nutze diese für angenehmere Dinge
- Steigere deine Produktivität und Effizienz
- Es ist leicht - In meinem Newsletter gebe ich Schritt für Schritt Anleitungen die jeder versteht
- Bei der Anmeldung zu meinem Newsletter erhälst du das Buch „Excel Tricks die deinen Chef beeindrucken“ als Willkommensgeschenk.
Falls Ihnen dieser Beitrag weitergeholfen hat, wäre es eine sehr nette Anerkennung meiner Arbeit wenn Sie z.B. Ihre Bücher über Amazon bestellen würden. Wenn Sie ein Produkt kaufen, erhalte ich dafür eine Provision. Für Sie ändert sich am Preis des Produktes gar nichts. Ich möchte mich an dieser Stelle jetzt schon für Ihre Unterstützung bedanken.
Bildquelle: Pixabay, CC0 Public Domain
Im Großen und Ganzen funktioniert die Protokollierung. Aber ich habe festgestellt, dass es auch nicht protokollierte Zugriffe gibt. Wenn ich versuche die Datei zu öffnen erscheint der Hinweis das bereits der Nutzer XYZ Zugriff hat und ich nur im Lesemodus zugreifen kann. Schaue ich später in das Protokoll ist dieser Nutzer nicht aufgeführt. Warum nicht?