[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.