Archive

Posts Tagged ‘Close’

Macro para crear un log y saber cuántas veces se abre un archivo de Excel

October 25, 2012 9 comments

Por cualquier motivo que tengamos, la siguiente permite guardar un registro o log de las ocasiones en que abrimos o cerramos un archivo de Excel, siempre y cuando el código lo ingresemos dentro del archivo a auditar y las macros estén habilitadas.

Cómo funciona

Al momento de abrir el archivo lanzamos la ejecución de un procedimiento con el evento Open del libro activo, y en un archivo .CSV se añade una línea que especifica la ruta completa del archivo, la fecha y hora, y el nombre de usuario de Excel, además de un indicativo si el archivo fue abierto o cerrado. El archivo que se creará tendrá como nombre logfile.csv y se creará en la misma carpeta del archivo.

image

Código

Añadimos en el objeto ThisWorkbook

Private Sub Workbook_Open()
Call Iniciar
End Sub
'
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Call Iniciar
End Sub

En un módulo normal añadimos

Dim AppObject As New clsApp
'
Sub Iniciar()
Set AppObject.AppEvents = Application
End Sub
'
Sub ActualizarLog(Wb)
Dim txt As String
Dim Fname As String
On Error Resume Next
txt = Wb.FullName
txt = txt & "," & Date & "," & Time
txt = txt & "," & Application.UserName
txt = txt & "," & "Abierto"
Fname = Application.ActiveWorkbook.Path & "\logfile.csv"
Open Fname For Append As #1
Print #1, txt
Close #1
'MsgBox txt
On Error GoTo 0
End Sub
'
Sub ActualizarLogSalida(Wb)
Dim txt As String
Dim Fname As String
On Error Resume Next
txt = Wb.FullName
txt = txt & "," & Date & "," & Time
txt = txt & "," & Application.UserName
txt = txt & "," & "Cerrado"
Fname = Application.ActiveWorkbook.Path & "\logfile.csv"
Open Fname For Append As #1
Print #1, txt
Close #1
'MsgBox txt
On Error GoTo 0
End Sub

Y en un módulo de clase añadimos

Public WithEvents AppEvents As Application
'
Private Sub AppEvents_WorkbookBeforeClose(ByVal Wb As Workbook, Cancel As Boolean)
Call ActualizarLogSalida(Wb)
End Sub
'
Private Sub AppEvents_WorkbookOpen(ByVal Wb As Excel.Workbook)
Call ActualizarLog(Wb)
End Sub

EXCELeINFO add-in: cerrar y eliminar archivo activo

Para la versión 2.2.7 del add-in, se crea en el apartado Archivos, una macro que nos permitirá cerrar el archivo activo, además de eliminarlo del disco duro. Esto puede ser útil para cuando utilizamos archivos provenientes de un correo electrónico o gestores de escritorio de correo, como Outlook, y no deseamos que se guarden copias temporales, sino verlos y que no quede rastro en nuestra PC.

Nota: úsese con cuidado, ya que al borrar dicho archivo, no se podrá recuperar de la papelera de reciclaje.

:: Descargar EXCELeINFO 2.2.7

Categories: Excel, vba Tags: , , ,