Seite 1 von 1
Texttabellenfelder formatieren
Verfasst: Di, 08.04.2008 13:13
von stoni
Hallo,
über ein Makro werden Zeilen aus einer Textdatei in eine Texttabelle (Writer!) kopiert. Nun möchte ich einzelne Felder der Tabelle gern per Basic formatieren (Ausrichtung, Zeichenformat,...). Könnte mir bitte jemand sagen, wie man die Zelleneigenschaften setzt?
Danke schon mal!
stoni
Re: Texttabellenfelder formatieren
Verfasst: Di, 08.04.2008 14:48
von komma4
..ich glaube, dass ich Dir diese Antwort schonmal gab: zum Bearbeiten von Texttabellen siehe
ATL2 - AutoTextListe2
Re: Texttabellenfelder formatieren
Verfasst: Di, 08.04.2008 18:51
von stoni
ja, das ist richtig. Nur muss ich gestehen, dass ich damit keine Antwort auf meine Frage gefunden habe.
Ich habe mit
Code: Alles auswählen
oRange = oTab.getCellRangeByName("D" & iZeile & ":F" & iZeile)
oRange.NumberFormat = 4
getestet - aber ohne Erfolg (auch keine Fehlermeldung). Nach meinen Recherchen soll NumberFormat=4 das Format #.##0,00 erzeugen...
stoni
Re: Texttabellenfelder formatieren
Verfasst: Mi, 09.04.2008 19:54
von komma4
stoni hat geschrieben: Nach meinen Recherchen soll NumberFormat=4 das Format #.##0,00 erzeugen...
Woher nimmst Du das?
Zum Problem:
Xray sagt mir, dass die Eigenschaft
.NumberFormat im Kontext nicht existiert.
Fügst Du reine nummerische Werte ein? Wie?
Re: Texttabellenfelder formatieren
Verfasst: Mi, 09.04.2008 20:33
von stoni
komma4 hat geschrieben:Woher nimmst Du das?
PDF-Dokument im Internet gefunden:
"... Und die Zahlenspalte soll ebenfalls nicht ganz rechts „hängen“, sondern mit einem entsprechenden Abstand. Außerdem soll das Zahlenformat die Form „#.##0,00“ erhalten, also mit Tausender-Trennzeichen, Dezimaltrenner und zwei Nachkommastellen. Hierzu wird ein entsprechender Formatcode (dieser ist identisch bei dem von Calc verwendeten Formatcode) zugewiesen. Das gewünschte Format hat den Code 4:"
Code: Alles auswählen
REM zweite Spalte formatieren
oSpEuro = oTab.getCellRangeByName("B2:B" & oRows.getCount())
oSpEuro.NumberFormat = 4
oSpEuro.ParaRightMargin = 500
end sub
Autor: © Thomas Krumbein, September 2005
Interessanterweise sind diese Codezeilen im aktuellen Buch "Makros in OpenOffice.org" (2. Auflage) von Thomas Krumbein nicht mehr vorhanden...
komma4 hat geschrieben:Fügst Du reine nummerische Werte ein? Wie?
Also ich habe einen Auswahldialog erstellt, aus dem man sich vordefinierte Texttabellenvorlagen auswählen kann. Diese Vorlagen sind aber sehr unterschiedlich, mal kann z.B. die Spalte [Preis] in der 3. und mal in der 5 Spalte stehen. Nun habe ich ein separates Makro zum Zeile einfügen erstellt das in Abhängigkeit der gewählten Texttabellenvorlage die eingefügte Zeile (bzw. einzelne Zellen der Zeile) formatieren soll. Z.B. suche ich auch nach der Möglichkeit, per Code den Zellschutz für eine Zelle zu setzen.
Viele Güße
stoni
Re: Texttabellenfelder formatieren
Verfasst: Mi, 09.04.2008 22:39
von komma4
Es bleibt dabei: mit der hier verwendeten 2.4.0 kann ich NumberFormat setzen, wie ich möchte, das funktioniert nicht wie erwartet (Bug?).
Ich verwende bei den Tests die Konstanten aus com.sun.start.util.NumberFormat, dort ist
4 = TIME
und
8 = CURRENCY
Da Du in der BASE-Sektion schreibst: verwendes Du eine Datenquelle? Eine Abfrage?
Ich nutze die Formatierungsmöglichkeiten einer Abfrage, um die Ergebnisspalte "einfach" als Text einzufügen:
SELECT ... to_char( t091_rechnung.netto, '99G999D99 L' ) ...
[PostgreSQL-Syntax!]
Vielleicht ist das für Dich auch eine Lösung?!
Re: Texttabellenfelder formatieren
Verfasst: Do, 10.04.2008 10:51
von stoni
ein Teil der Zelleninhalte wird über eine Abfrage gefüllt - ich werde versuchen, Deine Lösung mal auszuprobieren. Dann brauche ich "nur noch" eine Lösung, wie ich einzelne Zellen per Code schützen kann. Über das Menü Zeile -> Zelle schützen kann ich einzelne Zellen der Texttabelle manuell schützen, dann müsste es doch auch eine (Zell-)Eigenschaft geben, die man per Code zuweisen kann?
Viele Grüße
stoni
Re: Texttabellenfelder formatieren
Verfasst: Do, 10.04.2008 19:19
von komma4
Natürlich
Richtig erkannt: ist eine Zell-Eigenschaft - über RANGE kommst Du nicht weiter, aber so:
Code: Alles auswählen
oZelle = oTabelle.getCellByName( "B2" )
oZelle.isProtected = TRUE
Re: Texttabellenfelder formatieren
Verfasst: Do, 10.04.2008 22:56
von stoni
Vielen Dank! Genau das hatte ich gesucht.
Ciao
stoni