Seite formatieren
Moderator: Moderatoren
Seite formatieren
Hallo,
ich habe mein erstes Excel-VBA-Macro schon fast komplett auf OO umgearbeitet. Mir fehlt jetzt nur noch die Formatierung der Seiten und das Einfügen von Seitenumbrüchen. Leider klappt das aber über den Macro-Rekorder nicht.
Wer kann mir dabei helfen?
Danke
F. Hömmeke
ich habe mein erstes Excel-VBA-Macro schon fast komplett auf OO umgearbeitet. Mir fehlt jetzt nur noch die Formatierung der Seiten und das Einfügen von Seitenumbrüchen. Leider klappt das aber über den Macro-Rekorder nicht.
Wer kann mir dabei helfen?
Danke
F. Hömmeke
Hallo!
Die Seitenumbrüche habe ich mir per Makrorekorder programmiert und den Code dann angepaßt:
Der Zeilenumbruch erfolgt zwischen Zeile 12 und 13.
Dabei dienen die letzten beiden Zeilen mit dem ActiveSheet nur dazu, um eine schönere Darstellung zu erreichen. Denn bei Verwendung von Controller.select wird eine Zelle schwarz dargestellt. Durch schnelles Umschalten auf ein anderes Tabellenblatt erreicht man die normale Darstellung. Das andere Tabellenblatt muss natürlich vorhanden sein.
Die Formatierung einer Seite geschieht durch Ändern der Seitenvorlage. Du solltest allerdings noch ein paar Angaben machen, was du genau ändern willst, da die Änderungsmöglichkeiten sehr umfangreich sind.
Gruß
Charly
Die Seitenumbrüche habe ich mir per Makrorekorder programmiert und den Code dann angepaßt:
Code: Alles auswählen
sub Zeilenumbruch
rem ----------------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
Dok = ThisComponent
Controller = Dok.CurrentController
document = Controller.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
rem ----------------------------------------------------------------------
Blatt = Dok.sheets(0)
Zeile = Blatt.rows(12)
Controller.select(Zeile)
dispatcher.executeDispatch(document, ".uno:InsertRowBreak", "", 0, Array())
Zelle = Blatt.getCellbyPosition(0,12)
Controller.select(Zelle)
Controller.ActiveSheet = Dok.sheets(1)
Controller.ActiveSheet = Blatt
end sub
Dabei dienen die letzten beiden Zeilen mit dem ActiveSheet nur dazu, um eine schönere Darstellung zu erreichen. Denn bei Verwendung von Controller.select wird eine Zelle schwarz dargestellt. Durch schnelles Umschalten auf ein anderes Tabellenblatt erreicht man die normale Darstellung. Das andere Tabellenblatt muss natürlich vorhanden sein.
Die Formatierung einer Seite geschieht durch Ändern der Seitenvorlage. Du solltest allerdings noch ein paar Angaben machen, was du genau ändern willst, da die Änderungsmöglichkeiten sehr umfangreich sind.
Gruß
Charly
Seite formatieren
Hallo,
das mit den Seitenumbrüchen klappt schon prima.
Am Seitenformat möchte ich z.B. die Seitenausrichtung ändern, Kopf- und Fußzeilen eintragen, Seitenränder anpassen.
Gruß, Friedhelm H.
das mit den Seitenumbrüchen klappt schon prima.
Am Seitenformat möchte ich z.B. die Seitenausrichtung ändern, Kopf- und Fußzeilen eintragen, Seitenränder anpassen.
Gruß, Friedhelm H.
Hallo!
Ich habe mal versucht deine Frage in einen Code umzusetzen. Ich hatte allerdings keine Zeit den Syntax zu überprüfen. Falls was nicht funktioniert, frage nochmal nach.
gruß
Charly
Ich habe mal versucht deine Frage in einen Code umzusetzen. Ich hatte allerdings keine Zeit den Syntax zu überprüfen. Falls was nicht funktioniert, frage nochmal nach.
Code: Alles auswählen
Sub FormatiereSeite()
Dok = ThisComponent
StyleFamilies = Dok.StyleFamilies
PageStyles = StyleFamilies.getbyName("PageStyles")
'Hier Name der Seitenvorlage eingeben oder Standardvorlage = Default
DefPage = PageStyles.getByName("Default")
'Hochformat
DefPage.IsLandscape = False
'Querformat
DefPage.IsLandscape =True
'Seitenraender in 100stel mm
DefPage.LeftMargin = 1000
DefPage.RightMargin=1000
DefPage.TopMargin =1000
DefPage.BottomMargin=1000
'Kopfzeile
DefPage.HeaderIsOn = True
HContent = DefPage.RightPageHeaderContent
Htext = HContent.LeftText
Htext.String = "Ein Text"
DefPage.RightPageHeaderContent = Hcontent
'Fusszeile
DefPage.FooterIsOn = True
FContent = DefPage.RightPageFooterContent
Ftext = FContent.LeftText
Ftext.String = "Ein Text"
DefPage.RightPageFooterContent = FContent
End Sub
Charly
Hallo,
erstmal schönen Dank für die schnelle und kompetente Hilfe.
Probleme habe ich noch mit der Fußzeile. Einrichten klappt, aber wie bekomme ich die Seitennummerierung da hinein?
Die Umschaltung des Seitenformates von Quer- auf Hochformat funktioniert leider nicht so, OO meldet aber keinen Fehler.
Gruß, Friedhelm
erstmal schönen Dank für die schnelle und kompetente Hilfe.
Probleme habe ich noch mit der Fußzeile. Einrichten klappt, aber wie bekomme ich die Seitennummerierung da hinein?
Die Umschaltung des Seitenformates von Quer- auf Hochformat funktioniert leider nicht so, OO meldet aber keinen Fehler.
Gruß, Friedhelm
Hallo Friedhelm!
Bei mir funktioniert die Umschaltung. Ich weiß nicht woran es liegen kann.
Es gibt allerdings noch einen anderen Weg für die Umschaltung über die Printereigenschaft. Dokument.printer liefert ein Array. Im zweiten Feld steht die Information für Hoch und Querdruck
Das mit der Seitennummerierung, weiß ich im Moment auch nicht. Bei mir war die Seitennummerierung in der Standardvorlage immer vorbelegt. Einen Text habe ich dann nur in die anderen Teile (LeftText, CenterText oder RightText) eingefügt.
Das einzige was ich per Makro in Bezug auf Seitennummerierung bis jetzt geändert habe, war dass die erste Seite des Ausdruckes nicht mit 1 beginnen soll, sondern mit einer späteren Nummer.
Gruß
Charly
Bei mir funktioniert die Umschaltung. Ich weiß nicht woran es liegen kann.
Es gibt allerdings noch einen anderen Weg für die Umschaltung über die Printereigenschaft. Dokument.printer liefert ein Array. Im zweiten Feld steht die Information für Hoch und Querdruck
Code: Alles auswählen
Dok = ThisComponent
PaperProperties = Dok.printer
PaperProperties(1).value = 1 '0 = Hochdruck ; 1 = Querdruck
Dok.printer = PaperProperties()
Das einzige was ich per Makro in Bezug auf Seitennummerierung bis jetzt geändert habe, war dass die erste Seite des Ausdruckes nicht mit 1 beginnen soll, sondern mit einer späteren Nummer.
Gruß
Charly
Hallo Friedhelm!
Hier noch einen Nachtrag. Die Änderungen der Seitenvorlage wirken sich auf das ganze Dokument aus.
Wenn du im gleichen Dokument einmal Hoch und einmal quer drucken willst, musst du entweder die entsprechenden Seiten getrennt drucken und die Vorlage erst vor dem drucken ändern und dann wieder zurückändern oder du mußt mehrere Seitenvorlagen verwenden bei der einmal Hochdruck und einmal Querdruck eingestellt ist.
gruß
Charly
Hier noch einen Nachtrag. Die Änderungen der Seitenvorlage wirken sich auf das ganze Dokument aus.
Wenn du im gleichen Dokument einmal Hoch und einmal quer drucken willst, musst du entweder die entsprechenden Seiten getrennt drucken und die Vorlage erst vor dem drucken ändern und dann wieder zurückändern oder du mußt mehrere Seitenvorlagen verwenden bei der einmal Hochdruck und einmal Querdruck eingestellt ist.
gruß
Charly
Hallo Friedhelm!
Jetzt melde ich mich schon zum Drittenmal hintereinander. Aber ich bin jetzt hinter den Fehler mit der Umschaltung von Hoch- auf Querformat gestoßen. So wie ich dir den Code mitgeteilt habe, schaltet er zwar auf Querformat um, wechselt aber nicht gleichzeitig die Höhe und Breite der Seite. Die muss man separat einstellen.
Die Codeergänzung lautet:
Das mit den verschiedenen Seitenvorlagen funktioniert nur im Writer ohne Einschränkung. Im Calc kann man scheinbar nur auf verschiedenen Tabellenblättern mit unterschiedlicher Seitenausrichtung arbeiten.
Gruß
Charly
Jetzt melde ich mich schon zum Drittenmal hintereinander. Aber ich bin jetzt hinter den Fehler mit der Umschaltung von Hoch- auf Querformat gestoßen. So wie ich dir den Code mitgeteilt habe, schaltet er zwar auf Querformat um, wechselt aber nicht gleichzeitig die Höhe und Breite der Seite. Die muss man separat einstellen.
Die Codeergänzung lautet:
Code: Alles auswählen
DefPage.IsLandscape = true
DefPage.Width = 29700
DefPage.Height = 21000
Gruß
Charly