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

Nutzung, Komponenten, .NET

Moderator: Moderatoren

Antworten
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

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

Beitrag 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
Zuletzt geändert von Peter Schweizer am Mi, 26. Jun 2013 17:43, insgesamt 1-mal geändert.
Gruss Peter
Benutzeravatar
Rolf Ramacher
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 1930
Registriert: Do, 09. Nov 2006 10:33
Wohnort: Bergheim
Danksagung erhalten: 3 Mal
Kontaktdaten:

Re: OpenOffice Bookmarken anspringen und Text einfügen

Beitrag von Rolf Ramacher »

Hallo Peter,

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

Mitglied der Gruppe XUG-Cologne
www.xug-cologne.de
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: OpenOffice Bookmarken anspringen und Text einfügen

Beitrag 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
Gruss Peter
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: OpenOffice Bookmarken anspringen und Text einfügen

Beitrag von brandelh »

Hast du das in der Wissensbasis gefunden:

http://www.xbaseforum.de/viewtopic.php?f=16&t=847
Gruß
Hubert
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: OpenOffice Bookmarken anspringen und Text einfügen

Beitrag von Peter Schweizer »

Forums-suche: Open Office und ActiveX

Artikel in Wissenbasis

Gruß Peter
Gruss Peter
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: OpenOffice Bookmarken anspringen und Text einfügen

Beitrag von Peter Schweizer »

Die erwänhnte Visual Basic Quelle kommt aus angehängter Datei

Gruß Peter
Dateianhänge
Programming OpenOffice.org with Visual Basic.pdf
(93.75 KiB) 518-mal heruntergeladen
Gruss Peter
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: OpenOffice Bookmarken anspringen und Text einfügen

Beitrag 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 ...
Gruß
Hubert
Peter Schweizer
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 153
Registriert: Do, 06. Apr 2006 10:51
Danksagung erhalten: 3 Mal

Re: OpenOffice Bookmarken anspringen und Text einfügen

Beitrag 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
Gruss Peter
Antworten