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


1

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


Configure el origen de la copia para que sea una carpeta de red que solo usted administra para las macros
adampski

Toda la copia se realiza en una carpeta de red. Las macros están dentro del libro de trabajo principal.
JustAnotherPersonYouDontKnow

¿Es posible que cuando el archivo de Excel principal cree un nuevo libro de trabajo para ese nuevo libro de trabajo para verificar el Excel principal para su última fecha de modificación de modo que si se modifica en una fecha anterior, el libro de trabajo que se está creando matará el proceso, por lo tanto, el antiguo Excel principal ¿no trabajará?
JustAnotherPersonYouDontKnow

Respuestas:


3

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

Dir:

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

FSO:

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 última fecha de modificación de ese archivo que se puede utilizar para determinar si existe una versión más nueva.

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

Resultado de muestra: 6/1/2016 7:40:18 PM


Paso 3: Si existe una versión más nueva, puede mostrar un cuadro de mensaje al usuario para copiar la nueva versión de la unidad de red y cerrar el libro de trabajo. (No recomendaría la automatización para copiar / pegar desde la ubicación de la 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


Si un usuario tiene una versión anterior del archivo de Excel principal copiado en su escritorio y lo está utilizando como el principal en la red, ¿cómo se supone que esto evitará que el usuario pueda crear un nuevo libro de trabajo desde la macro dentro del archivo de Excel principal?
JustAnotherPersonYouDontKnow

es casi como cuando el usuario está creando el nuevo libro de trabajo que crea a partir de una plantilla de Excel, cuando la macro que abre / crea el nuevo libro de trabajo de la plantilla> tiene una macro dentro de esa plantilla para verificar el archivo de Excel principal que está haciendo la creación vea si es el más nuevo si no finaliza el proceso de macro.
JustAnotherPersonYouDontKnow

Debería actualizar el archivo de Excel principal actual en el recurso compartido de red con el código anterior modificado de la manera que lo necesite y solo esta vez, informar a TODOS los usuarios que el archivo está actualizado y obtener la nueva versión del recurso compartido de red. Una vez hecho esto, cualquier otra actualización posterior del archivo de Excel en el recurso compartido de red será detectada por el archivo de Excel que los usuarios han copiado
Thilina R
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.