Tabellenkopf fixieren

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Tabellenkopf fixieren

von Toxitom » Mi, 12.10.2005 21:28

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

von teakay » Mi, 12.10.2005 14:15

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. :-)

von Lenu » Mi, 12.10.2005 14:04

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

von Toxitom » Mi, 12.10.2005 12:33

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

von Lenu » Mi, 12.10.2005 12:09

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

von Toxitom » Mi, 12.10.2005 11:34

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

von Lenu » Mi, 12.10.2005 08:43

Hallo Stephan
Stephan hat geschrieben: Lade Dir mal:
http://kienlein.com/oo/DevGuide.zip
Die Makro-Bibliothek habe ich installiert und nach einer Weile auch herausgefunden, wie MainInspect funktioniert. Und das SDK habe ich auch installiert. Wie sehr ich mich aber darauf einlasse, das muss sich noch weisen, ist doch ziemlich "dicke Post" und ich habe mit Programmierung nur ganz, ganz am Rande zu tun. Im Moment ging es mir darum, herauszufinden, auf welche Dokumenteigenschaften man auf relativ einfache Art Zugriff hat, das habe ich dank Deinen Infos nun herausgefunden. Daraus habe ich folgende Funktionen erstellt:

Code: Alles auswählen

Function InfoDokDatumErstellung() As Long
   iDatE = thisComponent.getDocumentInfo().CreationDate
   InfoDokDatumErstellung = DateSerial(iDatE.Year, iDatE.Month, iDatE.Day)
end function

Function InfoDokDatumAenderung() As Long
   iDatA = thisComponent.getDocumentInfo().ModifyDate
   InfoDokDatumAenderung = DateSerial(iDatA.Year, iDatA.Month, iDatA.Day)
end function

Function InfoDokTitel()
   iTitel = thisComponent.getDocumentInfo().Title
   InfoDokTitel = iTitel
end function

Function InfoDokErstellerMod()
   iErstellerMod = thisComponent.getDocumentInfo().ModifiedBy
   InfoDokErstellerMod = iErstellerMod
end function

Function InfoDokThema()
   iThema = thisComponent.getDocumentInfo().Theme
   InfoDokthema = iThema
end function

Function InfoDokKey()
   iSchluessel = thisComponent.getDocumentInfo().Keywords
   InfoDokKey = iSchluessel
end function
Das ging auch soweit ganz gut (ausser mit "Author", damit habe ich's auch probiert, das bleibt aber leer. Sieht aber auch unter Datei/Eigenschaften/Allgemein so aus, als ob da nichts drin stünde).

Wenn man das Dokument neu öffnet, kommt ein Laufzeitfehler für die Funktion "Aenderungsdatum", offenbar ist diese Info beim Laden nicht vorhanden und alle anderen Funktionen (ausser dem Erstellungsdatum, das klappt immer) liefern BLANK. Wenn man dann anklickt "Datei/neu laden" wird wieder alles richtig ausgefüllt.

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

Schöne Grüsse

von Toxitom » Mi, 12.10.2005 08:17

Hey Lenu,

auch wenn es schon langsam untergeht: Das meiste, was ich hier zitiere, stammt aus meinem Buch <Werbung an>"Makros für OpenOffice.org 2.0", das zwar seit April fertig aber immer noch nicht veröffentlicht ist :cry: Kann ich nur empfehlen</Werbung aus>
Ansonsten hat Stefan dir die wesentlichen Quellen genannt. Mehr kann man leider nicht dazu sagen - suchen, suchen, suchen. Und dann experimentieren.

Viele Grüße
Thomas

von Stephan » Di, 11.10.2005 23:24

Hallo Lenu,
Dank Dir, da habe ich nun erstmal was zu tun,
mir war jetzt nicht bewußt das Du damit arbeiten willst (dachte nur Du willst eine Auskunft).
Lade Dir mal:
http://kienlein.com/oo/DevGuide.zip

Mußt Du dann über die Makro-Bibliotheksverwaltung installiere (Du weist wie?)
Damit kannst Du Dir das alles bequem mit einer'klickbaren' Oberfläche anzeigen lassen.


Gruß
Stephan

von teakay » Di, 11.10.2005 22:52

Alles klar jetzt hatts funktioniert.

Nochmal Danke an alle die geholfen haben.

von Lenu » Di, 11.10.2005 22:29

Stephan hat geschrieben:

Code: Alles auswählen

msgbox thisComponent.getDocumentInfo().dbg_properties
Dank Dir, da habe ich nun erstmal was zu tun,
schöne Grüsse

von Lenu » Di, 11.10.2005 22:27

teakay hat geschrieben:Wie ich oben schon geschrieben habe funzt das nicht über die Zellformatierung. Es bleibt einfach so wie es ist. Kann man da nicht etwas in dem Macro ändern damit es anders dargestellt wird.
Hast Du den Hinweis "Typ mit angeben" gelesen und "As Long" mit in die function aufgenommen? Ohne das ist das Ergebnis kein Zahlenwert und kann somit auch nichts mit einem Datumsformat anfangen.
Gruss

von teakay » Di, 11.10.2005 21:38

Wie ich oben schon geschrieben habe funzt das nicht über die Zellformatierung. Esbleibt einfach so wie es ist. Kann man da nicht etwas in dem Macro ändern damit es anders dargestellt wird.

von Stephan » Di, 11.10.2005 20:06

Mich würde mal interessieren was das Developpers Guide ist. Ich habe noch nie etwas davon gehört.
http://api.openoffice.org/DevelopersGui ... Guide.html


Gruß
Stephan

von Stephan » Di, 11.10.2005 20:03

Den Typ mit angeben:

Code: Alles auswählen

Function Erstelldatum() As Long
   vDat = thisComponent.getDocumentInfo().CreationDate 
   Erstelldatum = DateSerial(vDat.Year, vDat.Month, vDat.Day) 
end function
die Zelle anschließend mit dem Format-Code formatieren:

T. MMMM JJJJ


@Lenu
Ich grüble hier im Developpers Guide, aber entweder die Dokument-Info's werden hier nicht gelistet oder ich bin zu blöd, sie zu finden.
Ich weiß nicht ob die da stehen, systematisch nicht, wenn die drin stehen wären das Beispiele.
Systematisch steht das in der API-Referenz; online hier:
http://api.openoffice.org/docs/common/r ... tInfo.html
ist aber auch offline im SDK drin.

Außerdem geht immer

Code: Alles auswählen

.dbg_properties
.dbg_methods
.dbg_supportedInterfaces
das gibt für

Code: Alles auswählen

msgbox thisComponent.getDocumentInfo().dbg_properties
das hier:
Properties of object "Unknown":
SbxSTRING Author; SbxBOOL AutoloadEnabled;
SbxINTEGER AutoloadSecs; SbxSTRING AutoloadURL;
SbxSTRING BlindCopiesTo; SbxSTRING CopyTo;
SbxOBJECT/void CreationDate; SbxSTRING DefaultTarget;
SbxSTRING Description; SbxINTEGER EditingCycles;
SbxLONG EditingDuration; SbxSTRING InReplyTo;
SbxBOOL IsEncrypted; SbxSTRING Keywords;
SbxSTRING MIMEType; SbxSTRING ModifiedBy;
SbxOBJECT/void ModifyDate; SbxSTRING Newsgroups;
SbxSTRING Original; SbxOBJECT/void PrintDate;
SbxSTRING PrintedBy; SbxINTEGER Priority;
SbxSTRING Recipient; SbxSTRING References;
SbxSTRING ReplyTo; SbxBOOL SaveVersionOnClose;
SbxSTRING Template; SbxSTRING TemplateFileName;
SbxOBJECT/void TemplateDate; SbxSTRING Theme;
SbxSTRING Title; SbxARRAY Types;
SbxARRAY ImplementationId; SbxINTEGER UserFieldCount;
SbxOBJECT PropertySetInfo; SbxARRAY PropertyValues;
SbxSTRING Dbg_SupportedInterfaces; SbxSTRING Dbg_Properties;
SbxSTRING Dbg_Methods
Auch die Format-Angabe "DateSerial" würde mich näher interessieren.


Nein, das ist eine normale Basic-Funktion zu finden in der Online-Hilfe unter:

Makros und Programmierung - Befehle



Gruß
Stephan

Nach oben