¿Hay alguna manera de verificar una versión del libro de Excel para obtener la última versión?

¿Hay alguna manera de verificar una versión del libro de Excel para obtener la última versión?

Tengo un libro principal de Excel en el que los usuarios trabajan. La función de este libro de Excel es copiar y crear otro libro usando macros, etc. Esta copia se encuentra en una unidad de red donde todos pueden acceder a ella. El problema es que si alguien copió esta versión en su escritorio y luego se me ocurre una nueva versión de este libro principal, la versión anterior que la persona copió en su escritorio no tendrá las últimas actualizaciones de las macros, etc. . ¿Hay alguna manera de verificar o evitar que el libro anterior pueda ejecutar las macros o que funcione el libro anterior?

Respuesta1

Paso 1:Puede escribir una macro que buscará el archivo principal en una ubicación de red. Puedes usar Diro FSOpara hacer esto:

Dirección:

Sub Test_File_Exist_With_Dir()
    Dim FilePath As String
    Dim TestStr As String

    FilePath = "\\Server\test\book1.xlsm"

    TestStr = ""
    On Error Resume Next
    TestStr = Dir(FilePath)
    On Error GoTo 0
    If TestStr = "" Then
        MsgBox "File doesn't exist"
    Else
        MsgBox "File exist"
    End If

End Sub

FOE:

Sub Test_File_Exist_FSO_Late_binding()
'No need to set a reference if you use Late binding
    Dim FSO As Object
    Dim FilePath As String

    Set FSO = CreateObject("scripting.filesystemobject")

    FilePath = "\\Server\test\book1.xlsm"

    If FSO.FileExists(FilePath) = False Then
        MsgBox "file doesn't exist"
    Else
        MsgBox "File exist"
    End If

End Sub

Sub Test_File_Exist_FSO_Early_binding()
'If you want to use the Intellisense help showing you the properties
'and methods of the objects as you type you can use Early binding.
'Add a reference to "Microsoft Scripting Runtime" in the VBA editor
'(Tools>References)if you want that.

    Dim FSO As Scripting.FileSystemObject
    Dim FilePath As String

    Set FSO = New Scripting.FileSystemObject

    FilePath = "\\Server\Ron\test\book1.xlsm"

    If FSO.FileExists(FilePath) = False Then
        MsgBox "File doesn't exist"
    Else
        MsgBox "File exist"
    End If

End Sub

Paso 2:Puede hacer que verifique la fecha de la última modificación de ese archivo, lo que puede usarse para determinar si existe una versión más nueva.

FileDateTime("\\Server\test\book1.xlsm")

Resultado de muestra:01/06/2016 19:40:18


Paso 3:Si existe una versión más nueva, puede mostrar un cuadro de mensaje al usuario para que copie la nueva versión de la unidad de red y cierre el libro. (No recomendaría la automatización para copiar y pegar desde la ubicación de red a la estación de trabajo del usuario, ya que esto podría complicarse fácilmente y sin esto, todavía hace lo que se necesita)

MsgBox "A new version of this file exists on the network share. Please use the new version. This workbook will now close."
ActiveWorkbook.Close savechanges:=False

Referencias:

información relacionada