Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Save as verhindern bei Datumskonflikt | Herbers Excel-Forum


Betrifft: Save as verhindern bei Datumskonflikt von: Dietmar aus Aachen
Geschrieben am: 28.01.2010 16:28:26

Hallo in die Runde,

habe eine knifflige und wie ich meine interessate Sache:

Ich habe ein kleines Programm geschrieben, das ich einigen Leutchen zur Verfügung stelle. Dieses erhält auch Updates, um inhaltliche Änderungen zu übertragen. Updates suchen die Datei (hier: test123.xls) immer an der gleichen Stelle, nämlich in C:\OrdnerXY.

Dorthin erfolgt daher bei jedem Öffnen der Datei eine sofortige Speicherung. Dafür habe ich ein "Application.Run Speichern" erstellt, das auch ohne Nachfrage ausgeführt wird.

Meine Frage:
Wie könnte ich den Code verfeinern, so dass die aktuell zu öffnende test123-Datei nur dann in die Speicherroutine kommt, wenn diese ein älteres Änderungsdatum aufweist als die Datei, die zu diesem Zeitpunkt an dem vorgegebenen Ort gespeichert ist?
Grund: Die Datei wird von dem einen oder anderen per Explorer auf einen Stick gezogen und abgelegt. Dann wird aber mit der Originaldatei (C:\OrdnerXY\test123.xls) weitergearbeitet, so dass die "Stickdatei" sofort veraltet ist. Es soll nicht möglich sein, eine die Stick-Dateiversion zu öffnen, die ein jüngeres Änderungsdatum aufweist, weil die an dem vorgesehenen Speicherort befindliche Datei, diese dann überschreiben würde. Dann soll eine msgbox mit YesNo erscheinen, die auf den Konflikt hinweist.

Ich bin gespannt. Vorab vielen Dank!

Dietmar aus Aachen

Hier mein Code:


Option Explicit

Private Sub Workbook_Open()

Application.ScreenUpdating = False

If Dir("C:\OrdnerXY", vbDirectory) = "" Then
    MkDir ("C:\ OrdnerXY ")
    MsgBox "Der OrdnerXY e wurde angelegt", vbInformation, "Hinweis"
    
Else
   
    'MsgBox "Hinweis:" & vbCrLf & "" & vbCrLf & "Der Ordner C:\OrdnerXY für die Speicherung der  _
Datei ist vorhanden." & vbCrLf & "" & vbCrLf & "Bitte verändern Sie den genannten Pfad nicht(!), da Updates sonst nicht funktionieren.", vbExclamation, "Hinweis"
    
Dim inttab As Integer                       'Passwort auf allen Seiten aktivieren
For inttab = 1 To Worksheets.Count
Sheets(inttab).Protect ("12345678")
Next inttab

Worksheets("Eingangsseite").Activate        'Die Eingangsseite aufrufen


'Das Programm in den vorgesehenen Pfad speichern
Application.Run "Speichern"
Application.Run "SpeichernUnterNein" 'Zugriff auf Speichern unter verhindern
Application.ScreenUpdating = True

End Sub

Option Explicit


Sub Speichern()

If Dir("C:\OrdnerXY\test123.xls", vbDirectory) = "" Then
MsgBox "Die Datei wurde wie folgt gespeichert: C:\OrdnerXY\test123" & vbCrLf & "viel Spass",  _
vbInformation, "Hinweis"
Else

End If

Application.DisplayAlerts = False   'Nachfrage ausschalten, damit Zwangsspeicherung erfolgen  _
kann
ActiveWorkbook.SaveAs Filename:="C:\OrdnerXY\test123.xls"
Application.DisplayAlerts = True    'Nachfrage einschalten

End Sub

  

Betrifft: AW: Save as verhindern bei Datumskonflikt von: Michael
Geschrieben am: 29.01.2010 14:11:08

Hallo,
weiß nicht ob hilft? Du kannst das Änderungsdatum einer Datei mit Excel abfragen.

Dim objFSO As Object
Dim objFile, objFileHR As Object
.
.
.
PFAD = "C:\OrdnerXY"
Set objFSO = CreateObject("Scripting.FileSystemObject") 'Explorer abfrage
Set objFile = objFSO.GetFile(PFAD & "\test123.xls")

aendDatumakt = objFile.datelastmodified 'Änderungsdatum
.
.
.


Beiträge aus den Excel-Beispielen zum Thema "Save as verhindern bei Datumskonflikt"