Supportnet / Forum / Tabellenkalkulation
letztes Speicherdatum in Feld eintragen Excel 97
Frage
Ich weiß die Frage klingt bescheuert, aber wenn ich die Lösung wüßte würde ich Euch nicht damit behelligen.
Meine Frage:
Ist es möglich in Excel 97 das Datum der letzten Speicherung in ein Feld einzutragen und wenn ja wie funzt es!?
Thanx vorab
Pit
Antwort 1 von pelle
Hallo PitFFM,
hast du es schon mal unter
"Suche im Forum" mit "Speicherdatum" versucht?
Schau hier mal nach:
https://supportnet.de/discussion/listmessages.asp?AutoID=107348
gruss
pelle
Ps.: Falls es nicht passt, meld Dich nochmal!!
hast du es schon mal unter
"Suche im Forum" mit "Speicherdatum" versucht?
Schau hier mal nach:
https://supportnet.de/discussion/listmessages.asp?AutoID=107348
gruss
pelle
Ps.: Falls es nicht passt, meld Dich nochmal!!
Antwort 2 von PitFFM
Hab´den Thread gelesen !!!
Ä G Y P T E N ????
Irgwendwie versteh´ich nur spanisch.
Bin vielleicht zu blond ;-)
gibt´s auch ´nen weniger komplizierten Weg???
Wenn nicht, wie füge ich denn dieses Makro ein ???
In HTML bin ich besser. Da Copy und Pasteted man einfach in den Code.
Das funzt bei Excel aber leider nicht.
;-) :-(
Ä G Y P T E N ????
Irgwendwie versteh´ich nur spanisch.
Bin vielleicht zu blond ;-)
gibt´s auch ´nen weniger komplizierten Weg???
Wenn nicht, wie füge ich denn dieses Makro ein ???
In HTML bin ich besser. Da Copy und Pasteted man einfach in den Code.
Das funzt bei Excel aber leider nicht.
;-) :-(
Antwort 3 von pelle
Hallo PitFFM,
sorry, sollte nur Hinweis sein!
Bin genauso blond :-))) +2 )
gruss
pelle
sorry, sollte nur Hinweis sein!
Bin genauso blond :-))) +2 )
gruss
pelle
Antwort 4 von PitFFM
Das ist ja Prima!
Hab´aber immer noch keine Lösung!
CU P* ;-)
Hab´aber immer noch keine Lösung!
CU P* ;-)
Antwort 5 von sicci
Hallo Pit
wechsle mit Alt/F11 in die VBA-Entwicklunsgumgebung, klicke links (im sog. Projekt-Explorer) "This Workbook" doppelt. Ins sich rechts öffnende Fenster kopierst Du folgendes hinein:
Private Sub Workbook_BeforeSave( _
ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Range("A1") = FileDateTime(ThisWorkbook.FullName)
End Sub
Beim Speichern wird dann automatisch Datum+Uhrzeit zum Speicherzeitpunkt in A1 eingetragen. Das heißt du hast die Anzeige des letzten Speicherdatums nur ab dem ersten Mal speichern mit dem Speicher-Makro in der Datei.
Willst Du das letzte Speicherdatum einer Datei anzeigen lassen, die kein solches Makro enhält, mußt Du Dir mit einem Trick helfen: unsichtbar wird eine zweite Excel-Mappe generiert, die das letzte Speicherdatum der aktivenMappe sozusagen von außen in eine Variable einliest und das Eingelesene dann in der aktiven Mappe ausgibt. Dieses kannst Du in ein sog. normales Modul kopieren:
mit Alt/F11 in die Entwicklungsumgebung, Menue Einfügen/Modul öffnet ein Fenster, in das Du dieses Makro hineinkopieren kannst:
Sub Pit()
Dim exl, SP, AW$
AW = ActiveWorkbook.Name
 Set exl = CreateObject("Excel.Application")
exl.Workbooks.Add
 With exl.Sheets(1)
 SP = FileDateTime(Workbooks(AW).FullName)
 End With
 Set exl = Nothing
Range("A1") = SP
End Sub
Wieder in Deine Excel-Tabelle wechseln und Menue/Extras/Makros/Makro/Pit-Ausführen klicken.
Gruß
sicci
wechsle mit Alt/F11 in die VBA-Entwicklunsgumgebung, klicke links (im sog. Projekt-Explorer) "This Workbook" doppelt. Ins sich rechts öffnende Fenster kopierst Du folgendes hinein:
Private Sub Workbook_BeforeSave( _
ByVal SaveAsUI As Boolean, Cancel As Boolean)
 Range("A1") = FileDateTime(ThisWorkbook.FullName)
End Sub
Beim Speichern wird dann automatisch Datum+Uhrzeit zum Speicherzeitpunkt in A1 eingetragen. Das heißt du hast die Anzeige des letzten Speicherdatums nur ab dem ersten Mal speichern mit dem Speicher-Makro in der Datei.
Willst Du das letzte Speicherdatum einer Datei anzeigen lassen, die kein solches Makro enhält, mußt Du Dir mit einem Trick helfen: unsichtbar wird eine zweite Excel-Mappe generiert, die das letzte Speicherdatum der aktivenMappe sozusagen von außen in eine Variable einliest und das Eingelesene dann in der aktiven Mappe ausgibt. Dieses kannst Du in ein sog. normales Modul kopieren:
mit Alt/F11 in die Entwicklungsumgebung, Menue Einfügen/Modul öffnet ein Fenster, in das Du dieses Makro hineinkopieren kannst:
Sub Pit()
Dim exl, SP, AW$
AW = ActiveWorkbook.Name
 Set exl = CreateObject("Excel.Application")
exl.Workbooks.Add
 With exl.Sheets(1)
 SP = FileDateTime(Workbooks(AW).FullName)
 End With
 Set exl = Nothing
Range("A1") = SP
End Sub
Wieder in Deine Excel-Tabelle wechseln und Menue/Extras/Makros/Makro/Pit-Ausführen klicken.
Gruß
sicci
Antwort 6 von want2cu
@sicci:
ich bin mir nicht so ganz sicher, ob das folgende Listing nicht auch noch eine Alternative wäre:
Sub letztesSpeicherdatumErmitteln()
MasgBox ThisWorkbook.BuiltinDocumentProperties _
("Lst save time").Value
End Sub
Das ist zwar "nur" ne Ausgabe in einer Messagebox, aber es müßte dich auch anzupassen sein, damit der Wert in eine Zelle eingetragen wird.
Hierbei wird auf die Dokumenteigenschaften zurückgegriffen.
CU
Klaus
ich bin mir nicht so ganz sicher, ob das folgende Listing nicht auch noch eine Alternative wäre:
Sub letztesSpeicherdatumErmitteln()
MasgBox ThisWorkbook.BuiltinDocumentProperties _
("Lst save time").Value
End Sub
Das ist zwar "nur" ne Ausgabe in einer Messagebox, aber es müßte dich auch anzupassen sein, damit der Wert in eine Zelle eingetragen wird.
Hierbei wird auf die Dokumenteigenschaften zurückgegriffen.
CU
Klaus
Antwort 7 von shrike
@sicci & want2cu
Blöd ist bloß, daß sowohl der Dateiname als auch die Dokumenteigenschaften erst nach dem ersten Speichern zur Verfügung stehen. Außerdem würde damit immer Datum/Zeit des vorletzten Speicherns in der Zelle stehen.
Warum nehmt ihr nicht einfach "Date" oder "Now"???
Steht übrigens auch in obigem Thread ;-)
shrike
Blöd ist bloß, daß sowohl der Dateiname als auch die Dokumenteigenschaften erst nach dem ersten Speichern zur Verfügung stehen. Außerdem würde damit immer Datum/Zeit des vorletzten Speicherns in der Zelle stehen.
Warum nehmt ihr nicht einfach "Date" oder "Now"???
Steht übrigens auch in obigem Thread ;-)
shrike
Antwort 8 von shrike
@want2cu
Nochmal zur Erklärung:
Die Properties geben natürlich in einer MsgBox die korrekte Speicherzeit an. Aber wenn man es automatisieren will (mit dem Prozess "Workbook_BeforeSave"), dann stimmt es nicht mehr.
shrike
Nochmal zur Erklärung:
Die Properties geben natürlich in einer MsgBox die korrekte Speicherzeit an. Aber wenn man es automatisieren will (mit dem Prozess "Workbook_BeforeSave"), dann stimmt es nicht mehr.
shrike
Antwort 9 von want2cu
die Frage war:
"Ist es möglich in Excel 97 das Datum der letzten Speicherung in ein Feld einzutragen und wenn ja wie funzt es!? "
Bei dieser Fragestellung bin ich davon ausgegangen, dass die Datei bereits einmal gespeichert wurde und damit auch die Dateieigenschaften vorhanden sind.
Wie soll denn ein Speicherdatum abgefragt werden, wenn noch gar nicht gespeichert wurde???
Insoweit verstehe ich deine Antwort Nr.7 nicht ;-)
CU
klaus
"Ist es möglich in Excel 97 das Datum der letzten Speicherung in ein Feld einzutragen und wenn ja wie funzt es!? "
Bei dieser Fragestellung bin ich davon ausgegangen, dass die Datei bereits einmal gespeichert wurde und damit auch die Dateieigenschaften vorhanden sind.
Wie soll denn ein Speicherdatum abgefragt werden, wenn noch gar nicht gespeichert wurde???
Insoweit verstehe ich deine Antwort Nr.7 nicht ;-)
CU
klaus
Antwort 10 von shrike
Naja, dafür könnte man den Vorschlag von want2cu in der Open-Prozedur eintragen:
Private Sub Workbook_Open()
Worksheets(1).Range("A1").Value=ThisWorkbook.BuiltinDocumentProperties(12)_
.Value
End Sub
Dann stimmt's auch wieder ;-)
shrike
Private Sub Workbook_Open()
Worksheets(1).Range("A1").Value=ThisWorkbook.BuiltinDocumentProperties(12)_
.Value
End Sub
Dann stimmt's auch wieder ;-)
shrike
Antwort 11 von shrike
@want2cu
Nimms nicht so ernst - keiner will dich kritisieren ;-)
Ich bezog mich eher auf Sicci, denn bei seiner Lösung stimmt es eben nicht ganz.
Wenn ich während der Prozedur "BeforeSave" den Wert aus FileDateTime oder aus den Properties eintrage, dann habe ich eben den Wert vom vorletzten Speichern und nicht vom letzten Speichern (denn das ist ja in diesem Moment noch nicht passiert).
Bei der Open-Prozedur würde es dann stimmen (siehe 10).
Aber dabei hätte man folgenden Nachteil: Wenn die Datei z.B. den ganzen Tag offen ist und nur ab und zu gespeichert wird (nicht geschlossen und geöffnet), dann wird die Zelle nicht aktualisiert.
Für mich scheint es mit "Date" oder "Now" in der BeforeSave-Prozedur eben einfacher. Dabei schreibt man ja auch die Speicherzeit in die Zelle, denn in diesem Moment wird die Datei ja gespeichert (naja, vielleicht hat man eine Abweichung von Zehntelsekunden oder so ;-)
shrike
Nimms nicht so ernst - keiner will dich kritisieren ;-)
Ich bezog mich eher auf Sicci, denn bei seiner Lösung stimmt es eben nicht ganz.
Wenn ich während der Prozedur "BeforeSave" den Wert aus FileDateTime oder aus den Properties eintrage, dann habe ich eben den Wert vom vorletzten Speichern und nicht vom letzten Speichern (denn das ist ja in diesem Moment noch nicht passiert).
Bei der Open-Prozedur würde es dann stimmen (siehe 10).
Aber dabei hätte man folgenden Nachteil: Wenn die Datei z.B. den ganzen Tag offen ist und nur ab und zu gespeichert wird (nicht geschlossen und geöffnet), dann wird die Zelle nicht aktualisiert.
Für mich scheint es mit "Date" oder "Now" in der BeforeSave-Prozedur eben einfacher. Dabei schreibt man ja auch die Speicherzeit in die Zelle, denn in diesem Moment wird die Datei ja gespeichert (naja, vielleicht hat man eine Abweichung von Zehntelsekunden oder so ;-)
shrike
Antwort 12 von sicci
Hallo shrike,
Du hast Recht, mein erster Vorschlag sollte wenn schon ins Workbook_Open. Er würde sonst das vorletzte Speicherdatum anzeigen incl. der von Dir beschriebenen Mängel.
Ich selbst nutze nur die zweite Version, mit der ich IMMER -- AUCH OHNE VORHER ERST SPEICHERN ZU MÜSSEN !! -- Zugriff auf das letzte Speicherdatum habe. (geht natürlich nicht für neue Dateien, die noch nie gespeichert wurden ;-))
Unterschied FileDateTime zu Date&Now: Date&Now greift die Zeit am Anfang des Speichervorgangs ab, FileDateTime am Ende. Bei schnellen Rechnern vielleicht nicht relevant, da der Speichervorgang nur Sekunden braucht(meist aber nicht nur Zehntelsekunden). Bei großen Dateien allerdings oder bei langsameren Rechnern durchaus auch mal im Minutenbereich. Da muß man sich halt entscheiden, was man ausgegeben haben will.
Der Zugriff auf die Properties(12) funktioniert leider bis Version 97 nicht Weder unter Win95, noch unter 98, noch unter NT (getestet! - Etliche Properties sind abrufbar, einige, wie auch das Speicherdatum(die 12) nicht. Auch nicht in ner MsgBox :-(.
Es wäre eh die eleganteste Methode und ich nehme an, daß MS diesen eigentlich-schon-Bug ab Vesion2000 behoben hat.
Gruß
sicci
Du hast Recht, mein erster Vorschlag sollte wenn schon ins Workbook_Open. Er würde sonst das vorletzte Speicherdatum anzeigen incl. der von Dir beschriebenen Mängel.
Ich selbst nutze nur die zweite Version, mit der ich IMMER -- AUCH OHNE VORHER ERST SPEICHERN ZU MÜSSEN !! -- Zugriff auf das letzte Speicherdatum habe. (geht natürlich nicht für neue Dateien, die noch nie gespeichert wurden ;-))
Unterschied FileDateTime zu Date&Now: Date&Now greift die Zeit am Anfang des Speichervorgangs ab, FileDateTime am Ende. Bei schnellen Rechnern vielleicht nicht relevant, da der Speichervorgang nur Sekunden braucht(meist aber nicht nur Zehntelsekunden). Bei großen Dateien allerdings oder bei langsameren Rechnern durchaus auch mal im Minutenbereich. Da muß man sich halt entscheiden, was man ausgegeben haben will.
Der Zugriff auf die Properties(12) funktioniert leider bis Version 97 nicht Weder unter Win95, noch unter 98, noch unter NT (getestet! - Etliche Properties sind abrufbar, einige, wie auch das Speicherdatum(die 12) nicht. Auch nicht in ner MsgBox :-(.
Es wäre eh die eleganteste Methode und ich nehme an, daß MS diesen eigentlich-schon-Bug ab Vesion2000 behoben hat.
Gruß
sicci
Antwort 13 von sicci
PS: Nochmal zu DocumentProperties
Da hat Klaus ganz recht:
1. Sie könn(t)en wie in MsgBox auch in eine Zelle oder sonst ein Objekt oder Variable ausgegeben/eingelesen werden.
2. Das BeforeSave-Ereignis braucht man für Ausgabe der Properties natürlich nicht. Excel speichert die Properties auch ohne User-Ereignis-Makro :-).
Nur der Zugriff darauf ist wie o.e. nur bedingt möglich.
Gruß
sicci
Da hat Klaus ganz recht:
1. Sie könn(t)en wie in MsgBox auch in eine Zelle oder sonst ein Objekt oder Variable ausgegeben/eingelesen werden.
2. Das BeforeSave-Ereignis braucht man für Ausgabe der Properties natürlich nicht. Excel speichert die Properties auch ohne User-Ereignis-Makro :-).
Nur der Zugriff darauf ist wie o.e. nur bedingt möglich.
Gruß
sicci
Antwort 14 von shrike
Natürlich braucht man keine Ereignis-Prozedur dazu, aber dann müßte der User ja immer irgendwas tun - auf ein Symbol/Schaltfläche klicken oder so. Und die User sind doch immer so faul und vergeßlich... ;-)
shrike
shrike
Antwort 15 von sicci
... hehe shrike
üble Verunglimpfung aller User ;-)))))))
aber ich meinte nicht "keine Ereignis-Prozedur", sondern das 'Before-Save'-Ereignis, das nicht gebraucht wird.
Man könnte zB im Workbook_Open oder im Sheet_Activate, oder - auch ganz nett - bei Doppelklick, die Property anzeigen lassen, vollautomatisch :-). Oder vielleicht beim Selection_Change als MsgBox, um den User zu mehr Fleiß zu erziehen *dg*.
Gruß sicci
üble Verunglimpfung aller User ;-)))))))
aber ich meinte nicht "keine Ereignis-Prozedur", sondern das 'Before-Save'-Ereignis, das nicht gebraucht wird.
Man könnte zB im Workbook_Open oder im Sheet_Activate, oder - auch ganz nett - bei Doppelklick, die Property anzeigen lassen, vollautomatisch :-). Oder vielleicht beim Selection_Change als MsgBox, um den User zu mehr Fleiß zu erziehen *dg*.
Gruß sicci
Antwort 16 von PitFFM
*Bauklötze staun*
Hmmmhhhh !!! Offensichtlich war die Frage doch nicht so blöd!
Immerhin hat sie ein gewaltiges Diskussionspotential.
Ich bin zwar bisher nur ein "Allerweltsuser" aber jetzt fängt mich zu interessieren wie das in der Entwicklungsumgebung so funktioniert.
Das klingt zwar alles recht kompliziert und ich hoffte ursprünglich einen etwas einfacher zu praktizierenden Weg zu finden, aber sei´s drum. Ich probier´s einfach aus.
Erstmal großen Dank an alle.
CU P*
Hmmmhhhh !!! Offensichtlich war die Frage doch nicht so blöd!
Immerhin hat sie ein gewaltiges Diskussionspotential.
Ich bin zwar bisher nur ein "Allerweltsuser" aber jetzt fängt mich zu interessieren wie das in der Entwicklungsumgebung so funktioniert.
Das klingt zwar alles recht kompliziert und ich hoffte ursprünglich einen etwas einfacher zu praktizierenden Weg zu finden, aber sei´s drum. Ich probier´s einfach aus.
Erstmal großen Dank an alle.
CU P*
Antwort 17 von shrike
@sicci
"beim Selection_Change als MsgBox"
Boah ey! Du bist ja oberfies ;-)))
shrike
"beim Selection_Change als MsgBox"
Boah ey! Du bist ja oberfies ;-)))
shrike