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

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, nameEnd As Long strBuf = Space$(255) lngUser = WNetGetUser("", strBuf, 255) If lngUser = NO_ERROR Then nameEnd = InStr(strBuf, vbNullChar) strUn = Left(strBuf, nameEnd - 1) End If With ActiveSheet.PageSetup .LeftFooter = "" .LeftFooter = "erstellt von " & strUn & " am &D" End With End Sub

Über Stefan

Polyglot Clean Code Developer

10 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

  9. Hallo Stefan,
    dieses Makro ist klasse – wir haben es, bzw. ein vergleichbares bei Excel 2010 eingebaut. Ich hatte nun versucht das auch so in Word 2010 einzusetzen. Ging leider nicht.
    Hast du hierfür auch eine Lösung?
    LG
    Oliver

  10. Hallo Oliver, ich wusste gar nicht mehr, dass ich das Makro mal geschrieben habe 😉 Also nein, ich habe leider keine Lösung für Word. Tut mir leid.

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