usuario obtener identificar detectar excel excel-vba automation wmi username

excel - identificar - Use WMI para obtener el nombre de usuario actual de Windows en VBA



obtener el usuario de windows en excel (3)

No hay una cláusula TOP 1 en WQL. Déjalo y tu consulta debería funcionar:

"SELECT * FROM Win32_Process WHERE Name = ''EXCEL.EXE''"

Me preguntaba si había una manera simple de usar WMI para obtener el nombre de usuario actual de Windows con el dominio. La llamada a la API de Windows solo le proporciona el nombre de usuario corto, por lo que termina haciendo otra llamada para el nombre de dominio. Tengo un código, pero aparece un error de automatización. ¿Algunas ideas? Creo que estoy en el camino correcto, pero soy un poco nuevo en WMI.

Function GetFullName() As String Dim computer As String computer = "." Dim objWMIService, colProcessList As Object Set objWMIService = GetObject("winmgmts://" & computer & "/root/cimv2") Set colProcessList = objWMIService.ExecQuery _ ("SELECT TOP 1 * FROM Win32_Process WHERE Name = ''EXCEL.EXE''") Dim uname, udomain As String Dim objProcess As Object For Each objProcess In colProcessList objProcess.GetOwner uname, udomain Next GetFullName = UCase(udomain) & "/" & UCase(uname) End Function

ACTUALIZACIÓN: ver comentarios sobre la respuesta aceptada


Qué tal si

UserName = Environ("Username") Domain = Environ("UserDomain") Combined= Environ("UserDomain") & "/" & Environ("Username")


Tenga en cuenta que esto es antiguo, pero para tratar con múltiples instancias de Excel, otra publicación (vinculada a continuación) aclara cómo obtener el Id de proceso de la aplicación actual con:

Declare Function GetCurrentProcessId Lib "kernel32" () As Long ... ProcessID = GetCurrentProcessId Set ColProcessIDList = objWMIService.ExecQuery( _ "SELECT * FROM Win32_Process WHERE ProcessID = ''" & ProcessID & "''") ...

¿Cómo obtener el ID de proceso de la instancia de Excel actual, a través de VBA, sin usar el título?