[Excel, VBA] Benutzername einfügen

Gepostet am: Jun 15, 2011 11:29:21 AM

Es gibt Situationen, in denen man den Benutzernamen des Erstellers, Ausdruckers ... von Excel-Dokumenten oder anderen Office-Dokumenten in die Tabelle einfügen möchte. 

Benutzer_Name

Option Explicit     #If VBA7 Then     'Deklaration für 64bit     Private Declare PtrSafe Function apiGetUserName Lib "advapi32.dll" _                           Alias "GetUserNameA" (ByVal lpBuffer As String, _                                                 nSize As Long) As Long#Else     'Deklaration für 32bit     Private Declare Function apiGetUserName Lib "advapi32.dll" _                           Alias "GetUserNameA" (ByVal lpBuffer As String, _                                                 nSize As Long) As Long#End If               Public Function Benutzername() As String       Dim lngLen As Long, lngX As Long       Dim strUserName As String             strUserName = String$(254, 0)       lngLen = 255       lngX = apiGetUserName(strUserName, lngLen)       If lngX <> 0 Then          Benutzername = Left$(strUserName, lngLen - 1)         Else          Benutzername = ""       End If  End Function   Public Sub Benutzername_einfuegen()     Dim myRange As range     On Error Resume Next     Set myRange = Application.InputBox("Wählen Sie die Zelle aus, in der der " & _         "Benutzername eingefügt werden soll", "Benutzername", ActiveCell.Address, Type:=8)     If Err.Number <> 0 Then         Exit Sub     End If     If CheckSingleCell(myRange) = True Then         myRange.Value = Benutzername()     End If  End Sub

Dieses Modul stellt 2 Methoden zur Verfügung. Einerseits eine Funktion, die man direkt in Excel verwenden kann und immer den aktuellen Benutzer des Dokuments ermittelt. Schreibt man in Zelle [A1]=Benutzername() dann erscheint dort immer der aktuelle Benutzername.

Die zweite Funktion [Benutzername_einfuegen] fügt statisch den Benutzer ein, der dieses Makro ausführt. In diesem Fall ändert sich der Benutzername nicht, wenn weitere Benutzer das Dokument bearbeiten. Des weiteren benötigen die weiteren Bearbeiter des Dokumentes das Makro nicht, da der Benutzername statisch in die Zelle geschrieben wird. 

Anmerkung: So wirklich nützlich ist dieser Code in Excel direkt nicht (jedenfalls in meinen Augen). Ich persönlich benötige ihm primär in anderen Funktionen, die beispielsweise Benutzerpfade generieren, oder bestimmte Benutzer von bestimmten Funktionen aussperren.