Excel - Speicher-datum in Kopfzeile?
möchte immer das letzte Speicherdatum in der Kopfzeile. Habe bereits mehrere Lösungen gegoogelt, aber funktionieren tun sie nicht. Wo mache ich den Fehler?
Habe folgenden Befehl eingegeben
Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim booIsSaved As Boolean
Dim strDatInfo As String
With ThisWorkbook
booIsSaved = .Saved
If .Path <> "" Then
strDatInfo = .BuiltinDocumentProperties("Last save time")
Else
strDatInfo = "noch nicht gespeichert"
End If
ActiveSheet.PageSetup.LeftHeader = "Zuletzt gespeichert: " & strDatInfo
.Saved = booIsSaved
End With
End Sub
Und hier noch einen printscreen. Besten Dank

3 Antworten
Also bei mir funktioniert Dein Code einwandfrei.
Was genau "funktioniert" denn bei Dir nicht.
Welcher Fehler? An welcher Stelle? Welches Ergebnis?
Je mehr Info desto besser.
Habe den Kommentar an Hannes geschickt. Aber ich glaube, Für einen neuen Tipp ist dieser Weg ist.
Habe das ganze in einer neuen Arbeitsmappe - ohne bestehende Makros etc. versucht. (nach Deinem letzten Beitrag) Siehe Grafik
https://transferxl.com/08yQQMMFWQfQv
Leider ohne Erfolg. Noch eine Idee?
Ich habe das Makro aus der Frage kopiert und als "normales Makro", als mit
Sub Test
...
End Sub
laufen lassen und sehe dann, wenn ich auf Ansicht/ Seitenlayout gehe die erwartete Kopfzeile.
Mach das auch mal so. Klappt das?
Ist bei mir leider nicht so - erhalte Fehlermeldung -
End Sub erwartet.
Schicke Dir mal die Datei (hat keine pers. Daten() Weiss wirklich nicht mehr weiter.
Für den Test musst Du die Zeile:
Private Sub Workbook_BeforePrint(Cancel As Boolean)
löschen oder auskommentieren.
Dann klapp der Test in Deiner Beispieldatei bei mir schon mal.
Und auch, wenn das Blatt ausdrucke, wird vorher die richtige Kopfzeile eingefügt, wie gewollt.
Also: Bei mir klappt in der von Dir geposteten Datei alles.
Vielen Dank für Deine Geduld. Stand ist - Der Code funktioniert auch bei mir. (Wieso - weiss ich nicht, habe nichts verändert, nur Drucker neu installiert)
Aber nicht in Formular, wo ich schon einige andere Makros (alle funktionieren) habe.
Werde dies aber sicher noch zum Laufen bringen.
Wäre es nicht einfacher, im BeforeSave-Ereignis den Zeitstempel irgendwo in ein Tabellenblatt zu schreiben und beim Druckereignis auf diese Zelle zuzugreifen?
Private Sub Workbook_BeforePrint(Cancel As Boolean) ActiveSheet.PageSetup.LeftHeader = Sheets(1).Range("F1").Value End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Sheets(1).Range("F1").Value = Date End Sub
Hi,
Ist die Sub als Ereignisprozedur an das Workbook gekoppelt?
Auf dem Screenshot kann man es nicht genau erkennen, aber Modul1 ist grau unterlegt. Vielleicht liegt die Sub ja einfach an der falschen Stelle und wird überhaut nicht angestoßen. Setz doch mal einen Stop und prüfe, ob der Code ausgeführt wird.
Viel Erfolg
Hannes
p.s. den Code habe ich nicht überprüft, aber wenn Oubyi sagt, er läuft, dann läuft er ;-)
Du hast recht, "Modul1" scheint aktiv, und DA kann ein Ereignismakro nicht laufen.
@ernkie: Der Code gehört in das Modul der Arbeitsmappe (Rechtsklick auf "Diese Arbeitsmappe" --> Code anzeigen)
Habe das ganze in einer neuen Arbeitsmappe - ohne bestehende Makros etc. versucht. (nach Deinem letzten Beitrag) Siehe Grafik
https://transferxl.com/08yQQMMFWQfQv
Leider ohne Erfolg. Noch eine Idee?
Ziel ist es, das Speicherdatum in der rechten Zelle der Kopfzeile anzuzeigen.
Und jetzt wird trotz dem Code nichts angezeigt.
Muss ich in der betreffenden Zelle allenfalls einen Befehl eingeben? Stehe im Moment auf dem Schlauch
Arbeite übrigens mit W10 und O16 ohne aktivierten Blattschutz
Danke für Ideen