Excel guarde la hora fecha de cunado se prende y .

Necesito guardar en un excel la hora y la fecha que se prende la maquina y la hora y fecha cuando se apaga la maquina. Es posible. Y mejor si me dice el usuario con que se abrió la sesión
Saludos

1 respuesta

Respuesta
1
Lo que quieres hacer no es algo común, es más, por defecto un sistema operativo windows no trae esta información, para esto tienes que activarla, se denomina auditoria de eventos. Si quieres, primero lee este articulo, si entiendes y puedes hacerlo de forma manual, continuaremos e intentaremos hacerlo en excel.
http://freyes.svetlian.com/tips/auditar-inicio-sesion.htm
No funciona los link que están en el articulo, si no hagamos más fácil el tema, ya que si estoy en un dominio eso lo tengo que habilitar en el Servidor, y yo lo quiero en una maquina local.
Podríamos hacer simplemente que al iniciar la sesión me abra un archivo en excel y que el mismo tenga dos botones uno Inicio y el Otro Apagado.
Columna A el día Columna B Hora de inicio Columna C Hora de Apagado
Al apretar el botón inicio se guardara el día y la hora Col A y B y luego automáticamente que se guarde y se cierre.
Apagado se guardara en la Columna C Guarde y se cierre
El proximo dia hara lo mismo pero una fila mas abajo para no sobrescribir la del dia anterior
ahi esta ams facil el tema?
Se podría hacer como tu dices, el problema es que no seria lo más optimo. El excel es una aplicación relativamente demorada en iniciar, y en cerrarse. Por esta razón todos estos log, se guardan en archivos planos, por que su manejo es más rapido.
Aunque si quieres se hace en excel.
La otra forma es guardar los eventos en un txt y luego cargarlo en una hoja de excel cuando lo necesites visualizar.
Si ningún problema si lo podemos guardar en un archivo txt y luego lo visualizo cunado lo necesito con el excel, como seria
Ok, vamos por partes.
Primero tienes que crear dos archivos con el editor de texto uno para el logon y otro para el logoff
Uno se llamara logon. Cmd y el otro logoff. Cmd el código que debes de meter a cada uno es:
Para el logon. Cmd
Echo logon %username% %computername% %date% %time% >>logon.log
para el logof. Cmd
echo logon %username% %computername% %date% %time% >> logoff.log
Este código guarda en la ubicación, donde tienes los .cmd unos archivos .log donde quedara plasmado el usuario, nombre de equipo, fecha, y hora.
Puedes probar al ejecutar el logon. Cmd, si revisas el logon.log estarán tus datos de sesión.
Ahora, tienes que hacer que se ejecuten al iniciar y cerrar sesión. Para esto dale a inicio ejecutar y escribe gpedit. Msc
Ve a configuración del equipo->configuración de windows->archivos de comando y en inicio y apagar, agrega los archivos logon. Cmd y logoff. Cmd respectivamente.
Listo!, debería de funcionar, prueba que funcione, si es así continuaremos con la parte de excel.
Listo eso anda a la perfección, tengo los dos archivos y probé y me guarda lo que quería. Como seguiría la parte del excel, directamente lo abro para formato excel o hay otra mejor manera de hacerlo
Primero vamos a hacer unas modificaciones.
Se va ha manejar un solo archivo plano, ademas el logoff. Cmd tenia un error debería de decir echo logoff
así que lo vamos a guardar solo en el logon.log
para el logon. Cmd
echo logon %username% %computername% %date% %time% >>logon.log
para el logof. Cmd
echo logoff %username% %computername% %date% %time% >> logon.log
Una cosa muy importante para que el código sirva, debes de dar tab en vez de espacio en los .cmd.
Crea un libro de excel, abre el editor de vb alt+f11, dale en el explorador de proyectos al lado izquierdo donde dice thisworkbook. Pega este código:
Private Sub Workbook_Open()
Application.ScreenUpdating = False
Range("A2", ActiveCell.SpecialCells(xlLastCell)).ClearContents
fichero = "logon.log"
f = 2
c = 1
Set fso = CreateObject("Scripting.FileSystemObject")
ruta = ActiveWorkbook.Path
Set archivo = fso.OpenTextFile(ruta & "\" & fichero, 1)
    Do While Not archivo.AtEndOfStream
    contenido = archivo.readline()
    contenido = Split(contenido, vbTab)
    Cells(f, c).Select
    For i = 0 To UBound(contenido)
        If ActiveCell.Column = 4 Then
        ActiveCell = CDate(contenido(i))
        Else
        If ActiveCell.Column = 5 Then
        ActiveCell = CDate(Left(contenido(i), 8))
        Else: ActiveCell = contenido(i)
        End If
        End If
        ActiveCell.Offset(0, 1).Select
    Next
    f = f + 1
    Loop
 archivo.Close
 Set fso = Nothing
 Set archivo = Nothing
Application.ScreenUpdating = True
End Sub
Ahora guarda el libro en la misma ubicacion del log.log, si quieres guardarlo en otro lugar , debes de cambiar la linea donde dice
ruta = ActiveWorkbook.Path
por la ruta del path donde tienes el logon.log ejemplo
ruta="C:\Documents and Settings\Administrador\Mis documentos"
Cualquier duda avisame.
Estimado probé el código y paso a explicarte lo que pasa
Los archivos los tengo guardado en una Carpeta en el Disco E
Cuando apago y prendo la maquina no pasa nada. Pero cuando voy a la ubicación donde están y los hago correr si me toma y lo copia al Log
que puede estar andando mal, los sucesos de encendió y apagado no hagan correr dichos archivos
Saludos
Si tienes razón, lo que pasa es que al crear los scrips de inicio y fin de sesión, se crean unas copias, estas copias qdan guardadas en :
C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Startup
C:\WINDOWS\system32\GroupPolicy\Machine\Scripts\Shutdown
Entonces tienes que hacer una modificación:
Al los scripts tienes que ponerle la ruta completa donde esta el logon.log
pero intenta que no este en una carpeta muy profunda o que su nombre tenga más de 8 caracteres, preferiblemente dejalo en C:\
En resumen el logon. Cmd y el logoff. Cmd quedarían:
Para el logon. Cmd
Echo logon %username% %computername% %date% %time% >>C:\logon.log
para el logof. Cmd
echo logoff %username% %computername% %date% %time% >> C:\logon.log
El archivo de excel debe estar en la misma ubicación, pero si lo quieres ubicar en otro lugar, debes cambiar la linea donde dice:
ruta = ActiveWorkbook.Path  por   ruta = "C:\"
Paso a comentarte:
El sistema Operativo lo tengo instalado en la unidad E ya que C me tomo la tarjeta de memoria, pero igual no croe que influya. Todos los archivos los puse en la raíz del E y modifique los mismos, poniéndole la dirección del Logon.log
El tema es que no me lo esta ejecutando, fui a dicha carpeta donde guarda una copia y no había nada, luego copie los archivos ahí. Cierro y abro la sesión y nos los ejecuta. Por que si yo lo hago manualmente si lo hace
Que problema puede ser
Puse el archivo en programas>>inicio y ahí si me ejecuta obviamente cunado inicia la maquina, pero necesito los dos
Saludos y espero tus comentarios a ver si tiene un arreglo o no
Creo que había cometido una equivocación. Cuando te dije que "Ve a configuración del equipo->configuración de windows->archivos de comando y en inicio y apagar" esto sirve para apagado y prendido del pc, pero tu quieres es inicio y fin de sesión, para esto es en:
Configuración de usuario->configuración de windows->secuencia de comandos(inicio sesion/cierre sesión)
Ya lo probé y me funciona, cualquier duda comentame.
Mira ayer me puse a probar y probé esto que me estas diciendo ahora y no me funcionaba hasta que me di cuenta de que estaba obviando un tema importante que yo inicio sistema de un Dominio. Por lo cual probé iniciar la sesión en la maquina y esto que me estas diciendo ahora si funciona
Pero yo necesito que se ejecute cuando abro la sesión del dominio
Espero que haya alguna solución
Saludos y muchas gracias por todo lo que estas haciendo
Y estuve investigando pero es complicado hacer algo sin tener montada una red, para hacer pruebas.
Así que te tocaría averiguar con algún experto en este tema, y le preguntas el como ejecutar un script al inicio y fin de sesión en un dominio. Si hay que hacerle alguna modificación al código de la macro me cuentas.
De todos modos da por terminada la pregunta, y no me vallas a poner 1 estrella hee! XD, que me esforcé bastante en tu pregunta u.u

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas