[gelöst] Zellformat kopieren

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Blaukraut
**
Beiträge: 22
Registriert: So, 11.01.2009 15:59
Wohnort: Allgäu

[gelöst] Zellformat kopieren

Beitrag von Blaukraut »

Hallo,

ich möchte in CALC das komplette Zellenformat eines Tabellenbereiches von Tabelle B nach Tabelle A per Makro kopieren.
D.h. Schriftart, Hintergrundfarbe, Zahlenformat usw.
Dies funktioniert wunderbar per Hand mit dem "Pinselsymbol FORMAT ÜBERTRAGEN".
Ich habe daher ein Macro für diesen Vorgang aufgezeichnet (zuerst wird noch eine Zellverbindungen gelöst, daher mehr Zeilen).

Kurze Erläuterung des Makros:
- über args(3) wird in die Tabelle 7 gesprungen (dort habe ich das Wunsch-Zellformat im Bereich $E$23:$K$23 abgelegt)
- bei args(4) wird dies offenbar markiert
- args(5) gibt es nicht und der nächste Befehl ist auskommentiert. HIER würde ich vermuten, dass der Befehl "Format übertragen" hineingehört
- bei args(6) wird in die Zieltabelle zurückgesprungen. Auch hier fehlt die Angabe des Zielberichs (sollte ebenso $E$23:$K$23 sein)

Wie gesagt, auch während der Macroaufzeichnung funktionierte alles wie gewünscht!

Meines Erachtens ist die Makroaufzeichnung daher für die Funktion "Format übertragen" ungenügend oder täusche ich mich?
Wie heißt der Basic-Befehl für das Kopieren des Zellformates?

Danke vorab!

[OOVersion 3.0.0; Windows2000)

Code: Alles auswählen

sub copyZellformat
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$E$23:$K$23"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())

rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:ToggleMergeCells", "", 0, Array())

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Nr"
args3(0).Value = 7

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "ToPoint"
args4(0).Value = "$E$23:$K$23"

dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args4())

rem ----------------------------------------------------------------------
rem dispatcher.executeDispatch(document, ".uno:FormatPaintbrush", "", 0, Array())

rem ----------------------------------------------------------------------
dim args6(0) as new com.sun.star.beans.PropertyValue
args6(0).Name = "Nr"
args6(0).Value = 2

dispatcher.executeDispatch(document, ".uno:JumpToTable", "", 0, args6())

end sub

Zuletzt geändert von Blaukraut am So, 11.01.2009 16:50, insgesamt 1-mal geändert.
Charly
*****
Beiträge: 450
Registriert: Di, 20.01.2004 13:14
Wohnort: München

Re: Zellformat kopieren

Beitrag von Charly »

Hallo Blaukraut!

Ich habe mir dein Makro jetz nicht im einzelnen angeschaut. #Beim Formatübertragen, würde ich allerdings nicht die Pinselfunktion aufzeichen, sonder folgende Schritt:

1. Auf die Tabelle mit dem Format springen und den Bereich markieren.
2. Diesen Bereich kopieren.
3. dann die Zieltabelle und Zielbereich auswählen.
4. Auf Inhalt einfügen gehen und dort alle Häkchen außer Formate entfernen

Gruß
Charly
Blaukraut
**
Beiträge: 22
Registriert: So, 11.01.2009 15:59
Wohnort: Allgäu

Re: Zellformat kopieren

Beitrag von Blaukraut »

Und schon wieder hat der Charly mir geholfen!

Genau so funktioniert das Makro nun tatsächlich. :D :D :D
Jetzt stehen 8 logische Befehlsschritte darin, die ich nachvollziehen kann.
Vermutlich sind die Shortcut-Symbole für den MacroRecorder generell ungeeignet?
Zukünftig werde ich jedenfalls immer den Menue-Weg gehen.

Vielen Dank und einen fröhlichen Abend!
Antworten