Kopieren von Kopf- oder Fußzeile in neues Dokument

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

Moderator: Moderatoren

jaba2000
Beiträge: 8
Registriert: Fr, 07.04.2006 10:59

Kopieren von Kopf- oder Fußzeile in neues Dokument

Beitrag von jaba2000 »

Hallo,

ich möchte mit OO2.0 aus einer Vorlage mittels Makro den Inhalt, sowie die Kopf- und Fußzeile in ein neues Dokument kopieren. Dies funktioniert zwar mit dem Inhalt problemlos, jedoch nicht mit der Schriftart in Kopf- oder Fußzeile. Ist dies ein Bug bzw. wie geht's? Hier mein Makro:

Code: Alles auswählen

sub Kopieren
	rem Aktuelles Formular initialisieren
	document   = ThisComponent
	StyleFamiliesDoc = document.StyleFamilies
    PageStylesDoc = StyleFamiliesDoc.getByName("PageStyles")
    DefPageDoc = PageStylesDoc.getByName("Standard")
	documentFrame   = document.CurrentController.Frame
	dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	
	rem Setzen des Viewcursors des aktuellen Formulars auf den Bodytext-Anfang
	oTC = document.Text.createTextCursor() 
    myViewCur=document.GetCurrentController.ViewCursor
	myViewCur.gotoRange(oTC,false) 
   	myViewCur.gotoStart( false )

	rem Kopieren des Bodytextes
	dispatcher.executeDispatch(documentFrame, ".uno:SelectAll", "", 0, Array())
	dispatcher.executeDispatch(documentFrame, ".uno:Copy", "", 0, Array())

	rem Neues Dokument erstellen
	documentNew = CreateNewDocument("swriter")
	If Not IsNull(documentNew) Then
		rem Initialisierung des neuen Dokuments
		documentNewFrame   = documentNew.CurrentController.Frame
		StyleFamiliesDocNew = documentNew.StyleFamilies
    	PageStylesDocNew = StyleFamiliesDocNew.getByName("PageStyles")
    	DefPageDocNew = PageStylesDocNew.getByName("Standard")
   		myViewCursor=documentNew.GetCurrentController.ViewCursor
   		
   		rem Seiteneinstellungen der Vorlage ins neue Dokument übernehmen    	
    	DefPageDocNew.HeaderIsOn=DefPageDoc.HeaderIsOn
		DefPageDocNew.FooterIsOn=DefPageDoc.FooterIsOn
		DefPageDocNew.IsLandscape=DefPageDoc.IsLandscape
		DefPageDocNew.Width = DefPageDoc.Width
		DefPageDocNew.Height = DefPageDoc.Height
		DefPageDocNew.LeftMargin = DefPageDoc.LeftMargin
		DefPageDocNew.RightMargin = DefPageDoc.RightMargin
		DefPageDocNew.TopMargin = DefPageDoc.TopMargin
		DefPageDocNew.BottomMargin = DefPageDoc.BottomMargin
		
		rem Kopieren des Bodytextes ins neue Dokument
		dispatcher.executeDispatch(documentNewFrame, ".uno:Paste", "", 0, Array())
		
		if DefPageDoc.HeaderIsOn then 
			rem Kopiermethode1 hier beim Header
			rem Kopieren des Headertextes ins neue Dokument (Stil und Schriftart werden nicht mitkopiert!!!)
  		 	DefPageDocNew.HeaderText.String = DefPageDoc.HeaderText.String
		end if
  		if DefPageDoc.FooterIsOn then
			rem Kopiermethode2 hier beim Footer
			rem Kopieren des Footertextes ins neue Dokument (Schriftart wird nicht mitkopiert!!!)
			oTF = DefPageDoc.FooterText.Text.createTextCursor() 
			myViewCur.gotoRange(oTF,false) 
			oTFNew = DefPageDocNew.FooterText.Text.createTextCursor() 
			myViewCursor.gotoRange(oTFNew,false) 
			dispatcher.executeDispatch(documentFrame, ".uno:SelectAll", "", 0, Array())
			dispatcher.executeDispatch(documentFrame, ".uno:Copy", "", 0, Array())
			dispatcher.executeDispatch(documentNewFrame, ".uno:Paste", "", 0, Array())
  		end if

		rem Setzen der Viewcursor in beiden Dokumenten wieder Auf Bodytext-Anfang
		myViewCur.gotoRange(oTC,false) 
   		myViewCur.gotoStart( false )
		oTCNew = documentNew.Text.createTextCursor()
		myViewCursor.gotoRange(oTCNew,false) 
   		myViewCursor.gotoStart( false )
	End If
end sub
Gruß Jaba2000
jaba2000
Beiträge: 8
Registriert: Fr, 07.04.2006 10:59

Beitrag von jaba2000 »

Hallo an alle,

hab das Problem gefunden. War wirklich ein Bug. Ich hatte noch die Version OO2.0.0. Ab der Version OO2.0.1 funktioniert die zweite Kopiermethode (Footer) korrekt.

Gruß jaba2000
Antworten