Existe uma maneira de verificar uma versão da pasta de trabalho do Excel para a versão mais recente?

0

Eu tenho uma pasta de trabalho principal do Excel na qual os usuários trabalham. A função desta pasta de trabalho do Excel é copiar e criar outra pasta de trabalho usando macros ect. Esta cópia está localizada em uma unidade de rede onde todos podem acessá-lo. O problema é que, se alguém copiou essa versão para a área de trabalho e, mais tarde, surgiu uma nova versão dessa pasta de trabalho principal, a antiga que a pessoa copiou para a área de trabalho não terá as atualizações mais recentes para as macros e ect . Existe uma maneira de verificar ou impedir que o antigo seja capaz de executar as macros ou que a pasta de trabalho antiga funcione?

    
por JustAnotherPersonYouDontKnow 22.09.2016 / 23:02

1 resposta

2

Etapa 1: Você pode gravar uma macro que verificará o arquivo principal em um local da rede. Você pode usar Dir ou FSO para fazer isso:

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

Etapa 2: Você pode verificar a data da última modificação do arquivo que pode ser usada para determinar se existe uma versão mais recente.

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

Resultado da amostra: 01/06/2016 19:40:18

Etapa 3: Se houver uma versão mais recente, você poderá exibir uma caixa de mensagem ao usuário para copiar a nova versão da unidade de rede e fechar a pasta de trabalho. (Eu não recomendaria a automação para copiar / colar do local de rede para a estação de trabalho do usuário, pois isso poderia facilmente ficar confuso e sem isso, ainda faz o que é necessário)

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

Referências:

por 22.09.2016 / 23:33