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 - Come "catturare" il nome utente [Quick Tip] [VBA] 2 Excel VBA - Come inserire un modulo standard](https://www.excelacademy.it/wp-content/uploads/2014/12/diffdata21-460x416.jpg)
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:
![#Excel - Come "catturare" il nome utente [Quick Tip] [VBA] 3 Come utilizzare le User Defined Functions](https://www.excelacademy.it/wp-content/uploads/2015/01/COme-utilizzare-le-User-Defined-Functions-460x171.jpg)
![#Excel - Come "catturare" il nome utente [Quick Tip] [VBA] 4 Come utilizzare le User Defined Functions 2](https://www.excelacademy.it/wp-content/uploads/2015/01/COme-utilizzare-le-User-Defined-Functions-2-460x188.png)
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
![#Excel - Come "catturare" il nome utente [Quick Tip] [VBA] 5 Come modificare il nome utente di Excel](https://www.excelacademy.it/wp-content/uploads/2015/01/Come-modificare-il-nome-utente-di-Excel-460x331.jpg)
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]