Gibt es eine Möglichkeit, zu prüfen, ob die neueste Version einer Excel-Arbeitsmappe verfügbar ist?

Gibt es eine Möglichkeit, zu prüfen, ob die neueste Version einer Excel-Arbeitsmappe verfügbar ist?

Ich habe eine Excel-Hauptarbeitsmappe, mit der meine Benutzer arbeiten. Die Funktion dieser Excel-Arbeitsmappe besteht darin, andere Arbeitsmappen mithilfe von Makros usw. zu kopieren und zu erstellen. Diese Kopie befindet sich auf einem Netzlaufwerk, auf das jeder zugreifen kann. Das Problem ist, dass, wenn jemand diese Version auf seinen Desktop kopiert hat und ich später eine neue Version dieser Hauptarbeitsmappe erstelle, die alte, die die Person auf ihren Desktop kopiert hat, nicht die neuesten Aktualisierungen der Makros usw. enthält. Gibt es eine Möglichkeit, zu überprüfen oder zu verhindern, dass die alte Version die Makros ausführen kann oder dass die alte Arbeitsmappe funktioniert?

Antwort1

Schritt 1:Sie können ein Makro schreiben, das nach der Hauptdatei an einem Netzwerkspeicherort sucht. Dazu können Sie Diroder FSOverwenden:

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

BFS:

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

Schritt 2:Sie können das Datum der letzten Änderung der Datei prüfen lassen. Anhand dieses Datums lässt sich feststellen, ob eine neuere Version vorhanden ist.

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

Beispielergebnis:01.06.2016 19:40:18 Uhr


Schritt 3:Wenn eine neuere Version vorhanden ist, können Sie dem Benutzer ein Meldungsfeld anzeigen, in dem er aufgefordert wird, die neue Version vom Netzwerklaufwerk zu kopieren und die Arbeitsmappe zu schließen. (Ich würde das Kopieren/Einfügen vom Netzwerkspeicherort auf die Arbeitsstation des Benutzers nicht automatisieren, da dies leicht chaotisch werden könnte und ohne diese Funktion trotzdem das Nötige getan wird.)

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

Verweise:

verwandte Informationen