![]() |
OpenOffice Serienbrief Fehlermeldung
Hallo,
ich versuche ein *.odt-Dokument von meiner Anwendung aus zu starten. Hier der Code:
Delphi-Quellcode:
Beim ausführen bekomme ich die Fehlermeldung:
try
vEmptyParam:=VarArrayCreate([0, -1], varVariant); vSvcMgr:=CreateOleObject('com.sun.star.ServiceManager'); vDesktop:=vSvcMgr.createInstance('com.sun.star.frame.Desktop'); vMailMerge :=vSvcMgr.createInstance('com.sun.star.text.MailMerge'); except raise Exception.Create('Open Office Writer konnte nicht gestartet werden!'); Exit; end; sFileName := KonvFileName(ExtractFilePath(ParamStr(0))+ 'vorlagen\serienbriefoo.odt'); vDoc:=vDesktop.LoadComponentFromURL(sFileName,'_blank',0, vEmptyParam); vMailMerge.DataSourceName := 'Adressen'; vMailMerge.DocumentUrl := sFileName; vMailMerge.Execute(); Zitat:
Viele Grüße.... |
Re: OpenOffice Serienbrief Fehlermeldung
Probiers mal so:
Delphi-Quellcode:
procedure TForm1.MailMerge;
var MMerge, MMArgs: OleVariant; Dokumentenname_Old, Dokumentenname_New, LoadDok, OOoDB: string; begin If Filename = '' then begin Messagedlg('Dokument wurde nicht geladen', mtError, [mbOK], 0); exit; end; OOoDB := 'MVASpenden'; Dokumentenname_Old := Filename; Dokumentenname_New := 'Test'; LoadDok := 'D:\Tmp\'+Dokumentenname_New+'0'+'.odt'; MMArgs := VarArrayCreate([0, 6], varVariant); MMerge := OOo.oMerge; MMArgs[1] :=OOo.NamedValue('DocumentURL', OOo.ToOOPfad(Dokumentenname_Old)); MMArgs[0] :=OOo.NamedValue('DataSourceName', OOoDB); // 0=Tabellen 1=Abfragen 2=SQL-Abfragen MMArgs[2] := OOo.NamedValue('CommandType', 0); MMArgs[3] := OOo.NamedValue('Command', 'Spenden'); // Ausgabe an 1=Drucker 2=Datei MMArgs[4] := OOo.NamedValue('OutputType', 2); MMArgs[5] := OOo.NamedValue('OutputURL', OOo.ToOOPfad('D:\Tmp')); MMArgs[6] := OOo.NamedValue('FileNamePrefix', Dokumentenname_New); MMerge.execute(MMArgs); OOo.Open(LoadDok); end; |
Re: OpenOffice Serienbrief Fehlermeldung
Hi,
bekomme jetzt folgende Fehlermeldung: Zitat:
|
Re: OpenOffice Serienbrief Fehlermeldung
Mist, ich habe die Funktion NamedValue vergessen.
Delphi-Quellcode:
und
function TOLE_OpenOffice.NamedValue(vName, vValue: OleVariant): OleVariant;
var oPropertyValue: OleVariant; begin oPropertyValue := createStruct('com.sun.star.beans.NamedValue'); oPropertyValue.Name := vName; oPropertyValue.Value := vValue; Result := oPropertyValue; end;
Delphi-Quellcode:
muss natürlich auch abgesetzt werden.
oMerge := Service.CreateInstance('com.sun.star.text.MailMerge');
|
Re: OpenOffice Serienbrief Fehlermeldung
Hi,
vielen dank für deine Hilfe. Ich bin jetzt bis an diese Stelle gekommen: oPropertyValue := createStruct('com.sun.star.beans.NamedValue'); Hier meckert der Compiler über eine ungültige Typumwandlung :gruebel: |
Re: OpenOffice Serienbrief Fehlermeldung
Hast Du die Unit Variants eingebunden ??
|
Re: OpenOffice Serienbrief Fehlermeldung
Ja, hab ich...
|
Re: OpenOffice Serienbrief Fehlermeldung
Hallo Stefan,
alle Proceduren und Funktionen sind unter D7 ausgetestet. Weshalb D2005 darüber meckert ist mir nicht klar. P. S. Habe ich übersehen. Dir fehlt noch folgende Funktion:
Delphi-Quellcode:
Ich lasse Dir meine gesammelten Werke per Email zugehen.
function TOLE_OpenOffice.CreateStruct(strTypeName: OleVariant): OleVariant;
var aStruct, ClassSize: OleVariant; begin ClassSize := CoreRefl.forName(strTypeName); classSize.CreateObject(aStruct); Result := aStruct; end; |
Re: OpenOffice Serienbrief Fehlermeldung
Sind angekommen. Werde mich später da mal ausgiebig mit befassen.
Vielen Dank schonmal! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz