La información que buscas esta en el Registro de Eventos de Windows. Para acceder a ese registro con VBA se utiliza la librería WMI. Ahora bien, estuve haciendo unas pruebas y me saca las fechas en que se inicio sesión, pero estuve revisando y la mayoría coinciden pero hay algunas que no, y para entender porque tengo que dedicarle más tiempo del que tengo, de todas formas puedes probarlo. Yo uso Windows en ingles, no se si eso afecte el código si lo tienes en español ya que no se si la categoría que buscas cambia el nombre a español.
La macro que me saca las fechas en que se inicio sesión en windows
Sub FindLogons()
Application.ScreenUpdating = False
Dim uF As Long
Dim objObject As WbemScripting.SWbemObject
Dim setObjectSet As WbemScripting.SWbemObjectSet
Dim strServer As String
Dim strWQL As String
Dim svcServices As WbemScripting.SWbemServices
Dim varInsertionString As Variant
strServer = "."
Set svcServices = GetObject("winmgmts:\\" & strServer & "\root\cimv2")
strWQL = "SELECT * " & _
"FROM Win32_NTLogEvent " & _
"WHERE Logfile = ""System"""
Set setObjectSet = svcServices.ExecQuery(strWQL)
For Each objObject In setObjectSet
uF = Range("A" & Rows.Count).End(xlUp).Row + 1
If objObject.SourceName = "Microsoft-Windows-Winlogon" Then
Range("A" & uF).Value = "Generado:"
Range("B" & uF).Value = Left(objObject.TimeGenerated, 8)
End If
Set objObject = Nothing
Next
Application.ScreenUpdating = True
End Sub
Como te dije antes, no se si esto afecte en la linea:
If objObject.SourceName = "Microsoft-Windows-Winlogon" Then
En mi sistema operativo en ingles así es como se llama la categoría, no se si en Español haya que cambiarlo.
PD importante: Obviamente tienes que activar la librería en las referencias, se llama Microsoft WMI Scripting V1.2 Library.
Es un poco lento, eso si.
Acá un vídeo demo que grabe: video demo
Como veras en el video, algunas fechas no coinciden pero la mayoría si.