Tabellenkopf fixieren

Das Tabellenkalkulationsprogramm

Moderator: Moderatoren

Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Lenu,
Was mich auch noch interessieren würde, wozu ich aber bisher nichts gefunden habe: hat man auch Zugriff auf Erstellungs- und Änderungszeit? DateSerial liefert offenbar 00:00:00
Ja, hat man. Nur: DateSerial liefert eben nur einen Datumswert, die Funktion, die du brauchst, heisst TimeSerial() und erwartet drei Parameter: Stunden, Minuten, Sekunden -> Also:

Code: Alles auswählen

nZeit = timeSerial(oDatE.Hours, oDatE.Minutes, oDatE.Seconds)
liefert dir die entsprechende Zeit.

PS: noch ein Schönheitsmerkmal: Wenn du schon die ungarische Notation verwendest und Variable entsprechend kennzeichnest (sehr löblich :) ), dann bitte korrigiere die folgende Zeile:
iDatE = thisComponent.getDocumentInfo().CreationDate
CreationDate etc liefert keine Integer-Varaible, sondern ein Objekt des Typs com.sun.star.util.DateTime, die Variable sollte also mit "o" beginnen.

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Lenu
*******
Beiträge: 1085
Registriert: Sa, 30.10.2004 09:24

Beitrag von Lenu »

Hallo Thomas
im Prinzip funktionierts. Aber kann es sein, dass CreationDate und ModifyDate nur das Datum, aber nicht die Zeit liefern können? Oder habe ich was falsch verstanden:

Code: Alles auswählen

Function InfoDokZeitErstellung() As Long
   oZeitE = thisComponent.getDocumentInfo().CreationDate
   InfoDokZeitErstellung = TimeSerial(oZeitE.Hours, oZeitE.Minutes, oZeitE.Seconds)
end function
und

Code: Alles auswählen

Function InfoDokZeitAenderung() As Long
   oZeitA = thisComponent.getDocumentInfo().ModifyDate
   InfoDokZeitAenderung = TimeSerial(oZeitA.Hours, oZeitA.Minutes, oZeitA.Seconds)
end function
ergeben jedenfalls 0 (bzw. 00:00:00 im entsprechenden Format) und CreationTime scheint es nicht zu geben.

Schöne Grüsse
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Lenu,
Aber kann es sein, dass CreationDate und ModifyDate nur das Datum, aber nicht die Zeit liefern können? Oder habe ich was falsch verstanden:
Nein, beide Funktionen liefern sowohl das Dateum als auch die Zeit. Der zweite Satz ist da schon richtiger:
Unter Calc und Basic werden interne Datums/Zeit Werte als laufende Zahlen dargestellt, und zwar die Zeitwerte als Nachkommastellen, das Datum als Vorkommastellen.

Wenn du deine Funktionen aber als "Long " definierst, so werden nur Ganzzahlen ohne Nachkommastellen gespeichert. Wo soll da die Zeit hin?

Lass die Definition weg oder nimm Single bzw. Double, dann solltest du die Zeit auch sehen
:wink:

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Lenu
*******
Beiträge: 1085
Registriert: Sa, 30.10.2004 09:24

Beitrag von Lenu »

ach, ist das schöööööööööööööööööööööööööön!
Jetzt klappts sogar so:
=VERKETTEN(TEXT(INFODOKDATUMERSTELLUNG();"TT.MM.JJJJ");" ";TEXT(INFODOKZEITERSTELLUNG();"HH:MM"))

Bleibt nur noch der Schönheitsfehler mit dem Basic-Laufzeitfehler wenn beim Oeffnen des Dokumentes das Aenderungsdatum nicht gefunden wird.
Werde ich mich wohl noch mit dem Thema Fehler-Handling beschäftigen müssen. Kann man sowas in einer function überhaupt auffangen?

Jedenfals vielen Dank für Eure Hilfe. Und keiner hat sich daran gestört, dass das Ganze nichts mehr mit "Tabellenkopf fixieren" zu tun hatte. Da wird anderswo anders reagiert.

Schöne Grüsse
Benutzeravatar
teakay
***
Beiträge: 82
Registriert: Mi, 28.09.2005 08:47
Wohnort: Somewhere over the Rainbow.

Beitrag von teakay »

Mich stört es nicht das ihr ein wenig vom Thema abgewichen seit, denn es ging ja teilweise noch um den 2. Teil meiner Frage. So habe ich auch mal noch einiges mitbekommen. Vielleicht braucht man das ja mal. :-)
Toxitom
********
Beiträge: 3768
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Lenu,
Bleibt nur noch der Schönheitsfehler mit dem Basic-Laufzeitfehler wenn beim Oeffnen des Dokumentes das Aenderungsdatum nicht gefunden wird.
Probier einfach mal im entsprechenden Makro (das den Fehlercode produziert), die folgende Zeile einzufügen:

Code: Alles auswählen

sub <eben der Name>
  on error resume next
...
Das unterdrückt Fehlermeldungen und geht zur nächsten Zeile vor. Sollte man zwar nur begrenzt einsetzen - man sieht ja sonst die Fehlermeldungen nicht mehr - aber manchmal braucht man es eben :wink:

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten