Excel: Beim Drucken den aktuellen Benutzernamen in die Fußzeile eintragen

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):

Excel-Makro beim Drucken einer Datei ausführen
  1. Option Explicit
  2.      
  3. Private Declare Function WNetGetUser Lib "mpr.dll" Alias "WNetGetUserA" (ByVal lpName As String, ByVal lpUserName As String, lpnLength As Long) As Long
  4. Private Const NO_ERROR = 0
  5. Private Const ERROR_NOT_CONNECTED = 2250&
  6. Private Const ERROR_MORE_DATA = 234
  7. Private Const ERROR_NO_NETWORK = 1222&
  8. Private Const ERROR_EXTENDED_ERROR = 1208&
  9. Private Const ERROR_NO_NET_OR_BAD_PATH = 1203&
  10.      
  11. Private Sub Workbook_BeforePrint(Cancel As Boolean)
  12.     Dim strBuf As String, lngUser As Long, strUn As String, nameEnd As Long
  13.     strBuf = Space$(255)
  14.     lngUser = WNetGetUser("", strBuf, 255)
  15.     If lngUser = NO_ERROR Then
  16.         nameEnd = InStr(strBuf, vbNullChar)
  17.         strUn = Left(strBuf, nameEnd – 1)
  18.     End If
  19.      
  20.     With ActiveSheet.PageSetup
  21.         .LeftFooter = ""
  22.         .LeftFooter = "erstellt von " & strUn & " am &D"
  23.     End With
  24. End Sub

Über uns Stefan

Polyglot Clean Code Developer

8 Kommentare

  1. Wow, genau das, was ich gesucht habe. Jetzt kann ich mit meiner Lohnabrechnung weitermachen.

    Vielen Dank und weiter so!
    Viele Grüße,

    Gunther

  2. Danke für den Tipp. Bei unseren Reports hat das auch noch immer gefehlt, der Druckzeitpunkt wurde schon durch den Drucker aufgebracht und so können wir auch noch den Namen des Ausdruckenden protokollieren!

    Fanime

  3. Tausend Dank, schnell und einfach. Diese Excel Tabellen sind somit maschinell erstellt und ohne Unterschrift gültig. 😉

  4. Halli Hallo,

    leider bin ich nicht so der Excel spezialist…..
    bei mir kommt in der Zeile 11 ein Fehler ( Fehler beim kompilieren – Syntaxfehler) )
    WAS muss in der oben dargestellten Formel noch WIE geändert werden===???

    VIELEN DANK SCHONMAL

    LG MARKUS

  5. Hallo Markus. Das scheint in neueren Excel-Versionen nicht mehr so zu funktionieren. Habe das Makro oben nun etwas angepasst und es sollte jetzt laufen.

  6. Auf Excel 2000 funktioniert das leider nicht, da erscheint „Fehler beim kompilieren – Syntaxfehler“. Gibt es eine Lösung dafür?

  7. Hallo
    bei mir funkt es nicht.
    Die Datei liegt auf dem Server und ander Banutzer sollten damit arbeiten
    aber als Benutzername wird immer mein Name angegeben.
    Ich bitte um hilfe

  8. Hallo,
    das Makro ist genau was ich suche, jedoch bekomme auch ich einen Syntaxfehler zurück in Zeile 17. Ich nutze in der Firma excel 2003.
    Beste Grüße,
    Johnny

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax