vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Word   |   VB-Versionen: VBA05.11.02
Einfaches Protokollieren von Dokumentzugriffen

Ein Beispiel, wie sich das Öffnen von Dokumenten unter VBA sehr einfach protokollieren lässt.

Autor:   GünterBewertung:  Views:  19.407 
www.derhuber.comSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11kein Beispielprojekt 

Das nachfolgende Beispiel zeigt, wie sich unter VBA das Öffnen von z.B. Word-Dokumenten sehr einfach protokollieren lässt. Somit lässt sich dann später jederzeit nachvollziehen, wer ein bestimmtes Dokument wann geöffnet hat.

Und so geht's:

  1. das Worddokument öffnen, dessen Zugriff protokolliert werden soll und die VBA-Umgebung mit ALT+F11 aktivieren
  2. im Projektfenster den Ordner "Normal" - "Microsoft Word Objekte" öffnen und Doppelklick auf "ThisDocument"
  3. in das Fenster "Normal - ThisDocument (Code)" den nachfolgenden stehenden Code kopieren
    Private Sub Document_Open()
      Dim sFile As String
      Dim F As Integer
     
      sFile = "D:\Protokoll.txt"
      F = FreeFile
      Open sFile For Append As #F
      Print #F, ActiveDocument.Name; " Geöffnet von "; Application.UserName, Date, Time
      Close #F
     
      Protokoll_Check_Filesize sFile, 128000
    End Sub
  4. Worddokument schliessen und abspeichern
  5. Worddokument wieder öffnen und jetzt die Datei protokoll.txt öffnen, ansehen, bewundern - Fertig.

Da die Protokoll-Datei bei jedem Zugriff auf das Dokument "wächst", kann man über Protokoll_Check_FileSize die Größe der Protokoll-Datei abfragen, um diese auf eine bestimmte Maximal-Größe zu begrenzen (z.B. max. 128 KB).

Private Sub Protokoll_Check_FileSize( _
  ByVal sFile As String, ByVal nMaxSize As Long)
 
  Dim nFileSize As Long
  Dim sName As String
  Dim sExt As String
  Dim sPath As String
 
  On Error Resume Next
 
  ' Aktuelle Größe ermitteln
  nFileSize = FileLen(sFile)
 
  If nFileSize > nMaxSize Then
    ' Pfad und Dateiname ermitteln
    sPath = sFile: sName = ""
    While Right$(sPath, 1) <> "\" And sPath <> ""
      sName = Right$(sFile, 1) & sName
      sPath = Left$(sPath, Len(sPath) - 1)
    Wend
 
    ' Extension
    sExt = ""
    While Right$(sName, 1) <> "." And sName <> "" 
      sExt = Right$(sName, 1) & sExt
      sName = Left$(sName, Len(sName) - 1)
    Wend
 
    ' Datei umkopieren!
    ' Wird ja nur max. einmal pro Tag passieren, 
    ' daher das heutige Datum
    FileCopy sFile, _
      sPath & sName & "_" & Format(Now, "yymmdd") & sExt
    Kill sFile
  End If
End Sub

Weitere Anwendungsmöglichkeiten wäre beim Schliessen: Private Sub Document_Close(), usw.
 



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.