Ich versuche Text in ein Open Office Writer Dokument einzufügen.
Ich dachte mir, dass ich dazu erst eine Textmarke einfügen muss um dann an dieser Stelle meinen Text einzufügen.
Aber es klappt nicht, sieht jemand meinen Fehler?
Oder funktioniert das einfügen von Textmarken nur über Makros?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var vSvcMgr, vDesktop, vEmptyParam, vDoc, vBookmark, vTextCursor:OleVariant;
sFileName:
string;
begin
vEmptyParam:=VarArrayCreate([0, -1], varVariant);
vSvcMgr:=CreateOleObject('
com.sun.star.ServiceManager');
vDesktop:=vSvcMgr.createInstance('
com.sun.star.frame.Desktop');
if OpenDialog1.Execute
then
begin
sFileName:=KonvFileName(OpenDialog1.FileName);
vDoc:=vDesktop.LoadComponentFromURL(sFileName,'
_blank',0, vEmptyParam);
vBookmark := VDoc.createInstance('
com.sun.star.text.Bookmark');
vBookmark.
Name := '
test';
VDoc.Text.insertTextContent(vTextCursor, vBookmark, True);
vBookMark:=vDoc.Bookmarks.getByName('
test');
vTextCursor:=vBookMark.Anchor.Text.createTextCursorByRange(vBookmark.Anchor);
vTextCursor.SetString('
Hallo OpenOffice!'#$A'
Hier spricht Delphi...');
end;
end;
Bekomme nach dem schliessen meines Formulars folgende Fehlermeldung:
Zitat:
---------------------------
Oo
---------------------------
InterfaceOleWrapper_Impl::Invoke :
[automation bridge]UnoConversionUtilities<T>::createOleObjectWrapper
The VARIANT does not contain an object type!
---------------------------
OK
---------------------------
Wenn schon eine Textmarke im Dokument vorhanden ist reicht dieser Code:
Delphi-Quellcode:
procedure TForm1.btnTextmarkenClick(Sender: TObject);
var vSvcMgr, vDesktop, vEmptyParam, vDoc, vBookmark, vTextCursor:OleVariant;
sFileName:
string;
begin
vEmptyParam:=VarArrayCreate([0, -1], varVariant);
vSvcMgr:=CreateOleObject('
com.sun.star.ServiceManager');
vDesktop:=vSvcMgr.createInstance('
com.sun.star.frame.Desktop');
if OpenDialog1.Execute
then
begin
sFileName:=KonvFileName(OpenDialog1.FileName);
vDoc:=vDesktop.LoadComponentFromURL(sFileName,'
_blank',0, vEmptyParam);
vBookMark:=vDoc.Bookmarks.getByName('
test');
vTextCursor:=vBookMark.Anchor.Text.createTextCursorByRange(vBookmark.Anchor);
vTextCursor.SetString('
Hallo OpenOffice!'#$A'
Hier spricht Delphi...');
end;
end;
Grüße
Steven