fbpx

#Excel – Come “catturare” il nome utente [Quick Tip] [VBA]

Mi è capitato recentemente di voler inserire all’interno di un foglio il nome utente di chi, tempo per tempo, stia utilizzando la cartella di lavoro.

Tale informazione non è purtroppo accessibile tramite le funzioni standard di Excel, è stato pertanto necessario creare una funzione personalizzata (User Defined Functions).

Catturare il nome utente di Windows

Apriamo il nostro file di Excel e premiamo la combinazione di tasti Alt+F11 per attivare l’editor VBA. A questo punto inseriamo un nuovo modulo come nella figura seguente:

Excel VBA - Come inserire un modulo standard
Figura 1 – Come inserire un modulo standard

All’interno della finestra che si è appena aperta incollate il seguente codice:

[codesyntax lang=”vb”]

#If Win64 Then
    Public Declare PtrSafe Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As LongLong) As Long
#Else
    Public Declare Function GetUserName Lib "advapi32.dll" Alias "GetUserNameA" (ByVal lpBuffer As String, nSize As Long) As Long
#End If

Public Function CatturaUserNameWindows() As String

    Dim s As String * 255
    Dim lLen As Long
    Dim sString As String

    sString = ""
    On Error Resume Next
    lLen = GetUserName(s, 255)
    lLen = InStr(1, s, Chr(0))
    
    If lLen > 0 Then
        sString = Left(s, lLen - 1)
    Else
        sString = s
    End If
    On Error GoTo 0
    
    CatturaUserNameWindows = Trim(sString)
    
End Function

[/codesyntax]

Catturare il nome utente di Office

Se invece non volessimo ottenere il nome utente di Windows, ma solamente quello di Microsoft Office (il nome utente che abbiamo inserito alla prima installazione di Office), il codice sarebbe molto più stringato:

[codesyntax lang=”vb”]

Function CatturaUserNameOffice()
    CatturaUserNameOffice = Application.UserName
End Function

[/codesyntax]

Utilizzo delle User Defined Functions

A questo punto, qualunque delle due opzioni scegliessimo, vedremmo che Excel riconosce le nostre funzioni personalizzate:

Come utilizzare le User Defined Functions
Figura 2 – Come utilizzare le User Defined Functions
Come utilizzare le User Defined Functions 2
Figura 3 – Ecco gli username apparire su Excel

Bonus Tip – Come modificare il nome utente di Office

L’impostazione del nome utente inserito alla prima installazione di Office può essere modificata in qualsiasi momento attraverso le Opzioni di Office

Come modificare il nome utente di Excel
Figura 4 – Come modificare il nome utente di Excel

In realtà tale modifica, a differenza di quella relativa al nome utente di Windows, può essere effettuata anche tramite poche righe di codice

[codesyntax lang=”vb”]

Public Sub modificaUserNameOffice()

    With Application
        .UserName = "Pippo"
    End With
    
End Sub

[/codesyntax]

ATTENZIONE
Con entrambe le modalità, le eventuali modifiche avranno valore per tutte le applicazioni di Microsoft Office (Word, Excel, PowerPoint, ecc.)

Aspetta! Potrebbe interessarti anche: