Wir haben eine kleine Excel-Anwendung, deren Ergebnisse ab und an mal ausgedruckt werden müssen. Dabei soll jedoch ersichtlich sein, welcher konkrete Benutzer die Ergebnisse ausgedruckt hat. Daher soll bei jedem Druck der Benutzername des aktuell angemeldeten Benutzers in die Fußzeile des Excel-Dokuments eingetragen werden.
Mit einem kleinen Makro, das man einfach der aktuellen Arbeitsmappe hinzufügen kann, und das den besonderen Namen Workbook_BeforePrint bekommt, ist diese Anforderung recht einfach umzusetzen (obwohl zum Ermitteln des Benutzernamens die Windows-Funktion angesprochen werden muss, daher die kryptischen Befehle am Anfang):

-
Option Explicit
-
-
Private Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
-
Private Const NO_ERROR = 0
-
Private Const ERROR_NOT_CONNECTED = 2250&
-
Private Const ERROR_MORE_DATA = 234
-
Private Const ERROR_NO_NETWORK = 1222&
-
Private Const ERROR_EXTENDED_ERROR = 1208&
-
Private Const ERROR_NO_NET_OR_BAD_PATH = 1203&
-
-
Private Sub Workbook_BeforePrint(Cancel As Boolean)
-
Dim strBuf As String, lngUser As Long, strUn As String
-
strBuf = Space$(255)
-
lngUser = WNetGetUser("", strBuf, 255)
-
If lngUser = NO_ERROR Then
-
strUn = Left(strBuf, InStr(strBuf, vbNullChar) – 1)
-
End If
-
-
With ActiveSheet.PageSetup
-
.LeftFooter = ""
-
.LeftFooter = "erstellt von " & strUn & " am &D"
-
End With
-
End Sub



