Есть ли способ проверить версию книги Excel на предмет последней версии?

Есть ли способ проверить версию книги Excel на предмет последней версии?

У меня есть основная книга Excel, с которой работают пользователи. Функция этой книги Excel — копировать и создавать другие книги с помощью макросов и т. д. Эта копия находится на сетевом диске, где к ней может получить доступ каждый. Проблема в том, что если кто-то скопировал эту версию на свой рабочий стол, а затем я позже создам новую версию этой основной книги, то старая, которую этот человек скопировал на свой рабочий стол, не будет иметь последних обновлений макросов и т. д. Есть ли способ проверить или запретить старой книге запускать макросы или заставить старую книгу работать?

решение1

Шаг 1:Вы можете написать макрос, который будет проверять наличие основного файла в сетевом расположении. Вы можете использовать Dirили FSOдля этого:

Режиссёр:

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

ФСО:

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

Шаг 2:Вы можете проверить дату последнего изменения этого файла, что может быть использовано для определения наличия более новой версии.

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

Пример результата:01.06.2016 19:40:18


Шаг 3:Если существует более новая версия, вы можете отобразить окно сообщения для пользователя с просьбой скопировать новую версию с сетевого диска и закрыть книгу. (Я бы не рекомендовал автоматизировать копирование/вставку из сетевого расположения на рабочую станцию ​​пользователя, поскольку это может легко привести к беспорядку, а без этого он все равно делает то, что нужно)

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

Использованная литература:

Связанный контент