0% encontró este documento útil (0 votos)
5 vistas2 páginas

Registro de Apertura y Cierre en Excel

Este código VBA registra la apertura y cierre de libros de trabajo en Excel, excluyendo el libro de macros 'PERSONAL.XLSB'. Al abrir un libro, se registra la actividad con la fecha y la ruta del archivo, y al cerrarlo, se calcula la duración de la sesión. Los registros se almacenan en un archivo CSV en una ruta específica en el sistema del usuario.

Cargado por

lalavedra
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
5 vistas2 páginas

Registro de Apertura y Cierre en Excel

Este código VBA registra la apertura y cierre de libros de trabajo en Excel, excluyendo el libro de macros 'PERSONAL.XLSB'. Al abrir un libro, se registra la actividad con la fecha y la ruta del archivo, y al cerrarlo, se calcula la duración de la sesión. Los registros se almacenan en un archivo CSV en una ruta específica en el sistema del usuario.

Cargado por

lalavedra
Derechos de autor
© All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como TXT, PDF, TXT o lee en línea desde Scribd

Private WithEvents App As Application

Private Sub Workbook_Open()


' Asigna el objeto Application a la variable App cuando este libro se abre
Set App = Application
End Sub

' Este evento se dispara cada vez que se abre un libro de trabajo en la aplicación
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
' Se asegura de no registrar la apertura del propio libro de macros
If [Link] <> "[Link]" Then
RegistrarActividad "Archivo Abierto", [Link]
End If
End Sub

' Este evento se dispara justo antes de que se cierre un libro de trabajo
Private Sub App_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
If [Link] <> "[Link]" Then
RegistrarActividad "Archivo Cerrado", [Link]
End If
End Sub

Private Sub RegistrarActividad(ByVal tipoEvento As String, ByVal rutaArchivo As


String)
Dim rutaLog As String
Dim numArchivo As Integer
Dim lineaLog As String
Dim tiempoApertura As Date
Dim duracion As String

' IMPORTANTE: Modifique esta ruta a una carpeta existente en su equipo


rutaLog = "C:\Rutas\De\Registro\log_excel.csv"

numArchivo = FreeFile

If tipoEvento = "Archivo Abierto" Then


' Formato del log: Fecha y Hora, Tipo de Evento, Ruta del Archivo
lineaLog = Now & "," & tipoEvento & ",""" & rutaArchivo & """"
Open rutaLog For Append As #numArchivo
Print #numArchivo, lineaLog
Close #numArchivo
ElseIf tipoEvento = "Archivo Cerrado" Then
' Para calcular la duración, se busca la última vez que el archivo fue
abierto
Dim contenidoArchivo As String
Dim lineas() As String
Dim i As Long

Open rutaLog For Input As #numArchivo


contenidoArchivo = Input$(LOF(numArchivo), numArchivo)
Close #numArchivo

lineas = Split(contenidoArchivo, vbCrLf)


For i = UBound(lineas) To LBound(lineas) Step -1
If InStr(lineas(i), rutaArchivo) > 0 And InStr(lineas(i), "Archivo
Abierto") > 0 Then
On Error Resume Next
tiempoApertura = CDate(Split(lineas(i), ",")(0))
On Error GoTo 0
Exit For
End If
Next i

If tiempoApertura > 0 Then


duracion = Format((Now - tiempoApertura) * 1440, "0.00") & " minutos" '
1440 = 24 horas * 60 minutos
Else
duracion = "No disponible"
End If

' Formato del log: Fecha y Hora, Tipo de Evento, Ruta del Archivo, Duración
lineaLog = Now & "," & tipoEvento & ",""" & rutaArchivo & """," & duracion
Open rutaLog For Append As #numArchivo
Print #numArchivo, lineaLog
Close #numArchivo
End If
End Sub

También podría gustarte