OpenOffice Bookmarken anspringen und Text einfügen [Gelöst]
Moderator: Moderatoren
-
- 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]
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
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
- Rolf Ramacher
- Der Entwickler von "Deep Thought"
- Beiträge: 1931
- Registriert: Do, 09. Nov 2006 10:33
- Wohnort: Bergheim
- Danksagung erhalten: 3 Mal
- Kontaktdaten:
Re: OpenOffice Bookmarken anspringen und Text einfügen
Hallo Peter,
ich weiß es nicht mit 100%er Sicherheit, aber ich meine Active-X würde bei OpenOffice nicht funkt.
ich weiß es nicht mit 100%er Sicherheit, aber ich meine Active-X würde bei OpenOffice nicht funkt.
-
- Rekursionen-Architekt
- Beiträge: 153
- Registriert: Do, 06. Apr 2006 10:51
- Danksagung erhalten: 3 Mal
Re: OpenOffice Bookmarken anspringen und Text einfügen
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
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
-
- Rekursionen-Architekt
- Beiträge: 153
- Registriert: Do, 06. Apr 2006 10:51
- Danksagung erhalten: 3 Mal
Re: OpenOffice Bookmarken anspringen und Text einfügen
Forums-suche: Open Office und ActiveX
Artikel in Wissenbasis
Gruß Peter
Artikel in Wissenbasis
Gruß Peter
Gruss Peter
-
- Rekursionen-Architekt
- Beiträge: 153
- Registriert: Do, 06. Apr 2006 10:51
- Danksagung erhalten: 3 Mal
Re: OpenOffice Bookmarken anspringen und Text einfügen
Die erwänhnte Visual Basic Quelle kommt aus angehängter Datei
Gruß Peter
Gruß Peter
- Dateianhänge
-
- Programming OpenOffice.org with Visual Basic.pdf
- (93.75 KiB) 526-mal heruntergeladen
Gruss Peter
- brandelh
- Foren-Moderator
- Beiträge: 15706
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 70 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: OpenOffice Bookmarken anspringen und Text einfügen
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 ...
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
Hubert
-
- Rekursionen-Architekt
- Beiträge: 153
- Registriert: Do, 06. Apr 2006 10:51
- Danksagung erhalten: 3 Mal
Re: OpenOffice Bookmarken anspringen und Text einfügen
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
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