Seite 1 von 1

OpenOffice Bookmarken anspringen und Text einfügen [Gelöst]

Verfasst: Do, 06. Jun 2013 18:03
von Peter Schweizer
Hallo liebe Spezialisten,
ich versuche gerade mit OpenOffice einen Brief anzulegen (eine Vorlage für den Brief wurde in Word mit Textmarken erstellt)
und die vorhandenen Textmarken der Reihe nach mit Text zu versorgen.

Was ich bisher gemacht habe:
// den Servicemanager erzeugen
oServiceManager := CreateObject("com.sun.star.ServiceManager")
// den OOo-Desktop sichtbar erzeugen
oDesktop := oServiceManager:createInstance("com.sun.star.frame.Desktop")
// ein leeres Parameterarray erzeugen.
NullArgs := VTType():New( {}, VT_ARRAY+VT_VARIANT )
// Das Dokument sichtbar laden
cPath:=akt_pfad+'Briefe\'+cFile
oDocument := oDesktop:LoadComponentFromURL( convertToURL(cPath), '_blank', 0, Nullargs )

Nun soll ab einer Textmark Text eintragen werden:

cBookmark := "Test"
cText := "Beispiel"
* Textmarke
oBM := oDocument:getBookmark:getByName(cBookmark)
* Inhalt setzen
oBM:getAnchor:setString(cTxt)


Ich komme bis zur Zeile wo ich oBM zuweisen möchte, dann kommt Fehler:
oError:args :
-> VALTYPE: C VALUE: getBookmark
oError:canDefault : J
oError:canRetry : N
oError:canSubstitute: J
oError:cargo : NIL
oError:description : Unbekannter Name.
Member-Variable ist f

Hat einer einer Ahnung wie der korrekte Aufruf für so eine Bookmark ist ?

Viele Grüße von der Alb
Peter

Re: OpenOffice Bookmarken anspringen und Text einfügen

Verfasst: Fr, 07. Jun 2013 7:35
von Rolf Ramacher
Hallo Peter,

ich weiß es nicht mit 100%er Sicherheit, aber ich meine Active-X würde bei OpenOffice nicht funkt.

Re: OpenOffice Bookmarken anspringen und Text einfügen

Verfasst: Fr, 07. Jun 2013 9:25
von Peter Schweizer
Hallo Rolf,

es müßte schon gehen. Ich habe hier im Forum von "Günter Beyes » Mi Nov 15, 2006" einen Erfahrungsbericht gefunden (OpenOfficeAciveX_200.ZIP)
Darin wird sowas gezeigt.

Auch habe ich ein Beispiel gefunden wie es unter Vis.Basic gehen soll:
//aktuelle Briefkopfdaten im Dokument eintragen
* Set oSM = CreateObject("com.sun.star.ServiceManager")
* Set oDesk = oSM.createInstance("com.sun.star.frame.Desktop")
* Set oDoc = oDesk.loadComponentFromURL("file:///C:/tmp/testdoc.odt", "_blank", 0, arg())
* Set oTxt = oDoc.Text
*
* 'Inserts a bookmark at the beginning of the text
* Set oBk = oDoc.createInstance("com.sun.star.text.Bookmark")
* oBk.Name = "New_Bookmark_Beginning"
* Set oRng = oTxt.getStart()
* Call oTxt.insertTextContent(oRng, oBk, True)

* 'Inserts a bookmark at the end of the text
* Set oBk = oDoc.createInstance("com.sun.star.text.Bookmark")
* oBk.Name = "New_Bookmark_End"
* Set oRng = oTxt.getEnd()
*
* Call oTxt.insertTextContent(oRng, oBk, True)
*
* 'Inserts some text at an existing bookmark, requested by name
* strBkName = "New_Bookmark_End"
* oDoc.getBookmarks().getByName("New_Bookmark_End").getAnchor.setString ("**Inserted at '" & strBkName &
*
* 'Deletes an existing bookmark, requested by name
* strBkName = "New_Bookmark_End"
* Set oBk = oDoc.getBookmarks().getByName(strBkName)
* Set oTxt = oDoc.Text
* Call oTxt.removeTextContent(oBk)


jedoch habe ich Verständnis Probleme wie ich diese Syntax in xBase umsetzen kann.

Gruß Peter

Re: OpenOffice Bookmarken anspringen und Text einfügen

Verfasst: Fr, 07. Jun 2013 10:56
von brandelh
Hast du das in der Wissensbasis gefunden:

http://www.xbaseforum.de/viewtopic.php?f=16&t=847

Re: OpenOffice Bookmarken anspringen und Text einfügen

Verfasst: Fr, 07. Jun 2013 11:10
von Peter Schweizer
Forums-suche: Open Office und ActiveX

Artikel in Wissenbasis

Gruß Peter

Re: OpenOffice Bookmarken anspringen und Text einfügen

Verfasst: Fr, 07. Jun 2013 11:24
von Peter Schweizer
Die erwänhnte Visual Basic Quelle kommt aus angehängter Datei

Gruß Peter

Re: OpenOffice Bookmarken anspringen und Text einfügen

Verfasst: Fr, 07. Jun 2013 11:26
von brandelh
von Excel her weiß ich, dass ...
1. in VB: oObject.Irgendwas meist durch oObject:Irgendwas ersetzt werden muss.
2. VB unterstützt Methode( ParameterName=ParameterInhalt ) ... wir müssen immer alle Parameter in der richtigen Reihenfolge übergeben !
3. NIL wird normalerweise zu CHR(0) oder NULL-Pointer umgesetzt, das ist meist nicht was man will, daher besser alle Parameter mit richtigem Datentyp übergeben.
4. Manche Befehle kann man verketten, andere nicht ... warum weiß ich auch nicht => oBook, oPage, oRange etc. speichere ich daher zwischen und nehme die für weitere Arbeiten.

Scheinbar gibt es nicht viele die mit OpenOffice und ActiveX arbeiten ...

Re: OpenOffice Bookmarken anspringen und Text einfügen

Verfasst: Mi, 26. Jun 2013 17:42
von Peter Schweizer
Hallo Hubert,
vielen Dank für Deine Hinweise die Zielführend zum Erfolg geführt haben.

aus der Vorgabe: oDoc.getBookmarks().getByName("New_Bookmark_End").getAnchor.setString ("text string")

wurde damit:
cBookmark := 'Name der Textmarke' // Name der Textmarke/Bookmark
cText := 'neuer Text' // einzusetzender Text
* Bookmarks holen
oBMs := oDocument:getBookmarks()
* spez. Bookmark/Textmark Object holen
oBM := oBMs:getByName(cBookmark)
* Bookmark-Cursor holen
oBMCursor := oBM:getAnchor()
* Inhalt einsetzen
oBMCursor:setString(cText)

nochmals vielen Dank für auf die Sprünge helfen.

Gruß Peter