Speicherdatum einer geschlossenen Datei mit aktuellem Speicherdatum vergleichen
#1
Hallo Excelperten,

ich habe eine Datei A, die auf dem Laufwerk a gespeichert ist (a:\A)

In dieser Datei werden von einem Bearbeiter Änderungen durchgeführt und abgespeichert.

Die Datei wird einmal täglich auf ein anderes Laufwerk gespiegelt (nach b:\B'), wo sie von vielen Usern eingesehen werden kann.

Da der Spiegelungsprozess bisweilen nicht funktioniert, möchte ich diesen Prozess kontrollieren.

Dies soll so erfolgen, dass in a:\A ein VBA-Kode hinterlegt wird, der das Datum der letzten Speicherung von b:\B' ausliest und mit dem aktuellen Speicherdatum von a:\A vergleicht. Sofern die Differenz größer ist als 2 Tage, soll die Warnmeldung "Achtung, Spiegelungsprozess überprüfen!" erscheinen. Der Bearbeiter kann das dann veranlassen.

Da ich blutiger VBA-Änfänger bin, komme ich nicht weiter:

Sub Speicherkontrolle ()
Dim Speicherdatum as Double
Speicherdatum= FileDateTime("b:\B")    ' Liefert Speicherdatum von b:\B

if Speicherdatum+2 < ActiveWorkbook.BuiltinDocumentProperties(12).Value then
MsgBox "Achtung, Spiegelprozess überprüfen!"

End if

End Sub

Was muss ich ändern? Wo muss ich das reinstellen?

Vielen Dank

Excelbeginner
Top
#2
Moin!
Ich sehe da keinen offensichtlichen Fehler.
Selbstverständlich gehört aber die Dateierweiterung zur Abfrage:
Also B:\B.xlsx oder B:\B.xlsm oder B:\B.xlsb

Außerdem musst Du die "Wertigkeit" der Operatoren + und < beachten und entsprechend klammern:
If (Speicherdatum + 2) < ActiveWorkbook.BuiltinDocumentProperties(12).Value Then

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Excelbeginner
Top
#3
Hallo Ralf,

vielen Dank, das hat mir sehr geholfen! :18:

Es ergibt sich eine weitere Frage:

Zur Verfeinerung muss ich einen Zwischenwert (Datum mit Uhrzeit) mit VBA berechnen, diesen speichern und beim nächsten Aufruf der Datei auslesen.

Ich versuche das gerade mit

ActiveWorkbook.CustomDocumentProperties.Add Name:="Sp1_gespeichert"

Wo muss ich das hinterlegen?
Was muss ich da weiter angeben?

Wird der Wert mit ActiveWorkbook.CustomDocumentProperties("Sp1_gespeichert") aufgerufen?
Gibt es eine bessere Methoden?

Vielen Dank im Voraus

Excelbeginner
Top
#4
Hallo,

hat sich erledigt. Ich speichere den Werte in einem hidden sheet. Das ist einfacher.

Vielen Dank für das Mitdenken!

Excelbeginner
Top
#5
Moin!
Auch wenn Du eine andere Lösung gefunden hast, will ich Dir dennoch Deine Fragen beantworten.
Wenn ich etwas sehr versteckt speichern will, nehme ich dazu die CustomProperties-Eigenschaft des Worksheets.
Das hat den Vorteil, das dies nicht auf der Excel-Oberfläche auslesbar ist!

Du setzt sie einmalig mittels

Tabelle1.CustomProperties.Add "Sp1_gespeichert", Now

Wenn Du es per Makro machst, kannst Du es sofort wieder löschen.
Ich mache so etwas im Direktfenster.

Den Value dieser Eigenschaft kannst Du wie folgt überschreiben:

With Tabelle1
  .CustomProperties(.CustomProperties.Count).Value = Now
End With


Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste