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?