von theonlyrobi » Mi, 30.11.2005 18:11
Hallo Toxitom,
danke für die Tips. Das "Basic Programmierhandbuch" von Sun ist eine gute Einführung in Basic. Ich habe es nun hinbekommen, ein Makro zu erarbeiten, das in einem Dokument liegt und bei dem Ereignis "Dokument öffnen" ausgeführt wird. Dabei wird ein Dialog aufgerufen mit einem Formular, das mehrere Textfelder enthält. Diese werden bei dann von dem Makro ausgelesen und in die Fußzeile des Dokuments geschrieben.
Mein Dokument
Hier der Quelldode:
Code: Alles auswählen
Option Explicit
sub entry_name
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")
Dim Dlg As Object
dim tb_vname as string
dim tb_nname as string
dim tb_matr as string
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.entry_name)
Dlg.Execute()
tb_vname = Dlg.getControl("tb_vname").text
tb_nname = Dlg.getControl("tb_nname").text
tb_matr = Dlg.getControl("tb_matr").text
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "PageStyle"
args1(0).Value = "Standard"
args1(1).Name = "On"
args1(1).Value = true
dispatcher.executeDispatch(document, ".uno:InsertPageFooter", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = tb_vname + " " + tb_nname + " (" + tb_matr + ")"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
'ThisComponent.CurrentController.getViewCursor.textSection.IsProtected=true
Dlg.dispose()
end sub
Doch was ich nicht geschafft habe, ist dass ich die Fußzeile dann auch automatisch per Makro schützen kann. "Per Hand" geht das ja über --> Einfügen --> Bereich. Doch wird das nicht von dem Makro Rekorder aufgezeichnet. Welche Möglichkeit habe ich denn, die Fußzeile zu schützen?
Robert
Hallo Toxitom,
danke für die Tips. Das "Basic Programmierhandbuch" von Sun ist eine gute Einführung in Basic. Ich habe es nun hinbekommen, ein Makro zu erarbeiten, das in einem Dokument liegt und bei dem Ereignis "Dokument öffnen" ausgeführt wird. Dabei wird ein Dialog aufgerufen mit einem Formular, das mehrere Textfelder enthält. Diese werden bei dann von dem Makro ausgelesen und in die Fußzeile des Dokuments geschrieben. [url=http://data.robi-im-netz.de/docs/dialog.odt]Mein Dokument[/url]
Hier der Quelldode:[code]Option Explicit
sub entry_name
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")
Dim Dlg As Object
dim tb_vname as string
dim tb_nname as string
dim tb_matr as string
DialogLibraries.LoadLibrary("Standard")
Dlg = CreateUnoDialog(DialogLibraries.Standard.entry_name)
Dlg.Execute()
tb_vname = Dlg.getControl("tb_vname").text
tb_nname = Dlg.getControl("tb_nname").text
tb_matr = Dlg.getControl("tb_matr").text
rem ----------------------------------------------------------------------
dim args1(1) as new com.sun.star.beans.PropertyValue
args1(0).Name = "PageStyle"
args1(0).Value = "Standard"
args1(1).Name = "On"
args1(1).Value = true
dispatcher.executeDispatch(document, ".uno:InsertPageFooter", "", 0, args1())
rem ----------------------------------------------------------------------
dim args2(0) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Text"
args2(0).Value = tb_vname + " " + tb_nname + " (" + tb_matr + ")"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args2())
'ThisComponent.CurrentController.getViewCursor.textSection.IsProtected=true
Dlg.dispose()
end sub[/code]
Doch was ich nicht geschafft habe, ist dass ich die Fußzeile dann auch automatisch per Makro schützen kann. "Per Hand" geht das ja über --> Einfügen --> Bereich. Doch wird das nicht von dem Makro Rekorder aufgezeichnet. Welche Möglichkeit habe ich denn, die Fußzeile zu schützen?
Robert