lunes, 7 de noviembre de 2016

Excel VBA Macro: Ejecutar una macro para control de versiones

Tal vez compartes el trabajo sobre un modelo Excel en particular con varias personas (y deseas saber quién modifico el archivo)

Mediante el objeto FileSystemObject  agregaremos una referencia ..esto nos permite trabajar con archivos
Cualquier instalación de Excel con las características VBA instaladas puede acceder a esta libreria.
Podemos  leer, escribir, borrar, etc.,  archivos y carpetas.

Obtendremos información como:
Fecha de creación de un fichero Excel.
Fecha de la última modificación de un archivo Excel
Fecha del último acceso a un fichero Excel (corriendo sobre el archivo abierto)

Además puedes capturar el usuario y grabarlo en una hoja muy oculta cada vez que presiona el botón guardar…
'¿Application.UserName
'Son Goku

Sub Check_File()
'Esto es solo una idea puedes hacer por tu propia cuenta y riesgo miles de mejoras cambios, pruebas,etc

On Error Resume Next

Dim o_file As Object, o_fso As Object, FullPath As String
Dim last_acces As String, last_change As String, date_creation As String

FullPath = ActiveWorkbook.FullName 'La ruta completa de mi libro
Set o_fso = CreateObject("Scripting.FileSystemObject") 'creo el objeto fso
Set o_file = o_fso.GetFile(FullPath)

date_creation = o_file.DateCreated
last_change = o_file.DateLastModified
last_acces = o_file.DateLastAccessed

Range("C1") = "Heading"

If Err.Number <> 424 Then

Range("C2") = "Date_creation: " & date_creation
Range("C3") = "Last_change: " & last_change
Range("C4") = "Last_acces: " & FormatDateTime(last_acces) ', vbShortDate)

Else
Range("C2") = "Creación: " & Err.Description
Range("C3") = "Modificación del fichero: " & Err.Description
Range("C4") = "Último acceso: " & Err.Description
End If

Set fso = Nothing
Set archivo = Nothing
End Sub





No hay comentarios: