Informationen und Beispiele zum Thema MsgBox | |
---|---|
![]() |
MsgBox-Seite mit Beispielarbeitsmappe aufrufen |
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
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
.
.
.