![]() |
OO speichert meine DOC automatisch als ODT
Hallo,
ich steuere OO (3.4/4.0) per OLE (oder wie diese Bridge bei denen heisst) fern also ist es eine Delphi-Frage ;) Leider wird meine DOC-Datei von OO immer automatisch als ODT gespeichert, obwohl der Haken bei "Format beibehalten" gesetzt ist. Das passiert leider bei einem Kunden. Ich kann das hier nicht nachvollziehen ;( Kennt jemand das Problem ? Danke Heiko |
AW: OO speichert meine DOC automatisch als ODT
Zitat:
OO ist bei den Formaten (auch im Dialogbetrieb) etwas zickig. Manchmal muß ich ihm explizit sagen welches Format ich will. Gruß K-H |
AW: OO speichert meine DOC automatisch als ODT
Wenn es schon ein Delphi-Thema ist:
Wie ist den dein Quellcode? Evtl solltest du den (optione?) Angabe des Speicherformats angeben damit sowas nicht nach Wohlwollen anders durchgeführt wird). Evtl. reicht die Angabe der Dateiextension nicht aus. Aber ohne Quellcode wird das eine Raterunde. |
AW: OO speichert meine DOC automatisch als ODT
Hallo,
das hier ist der aktuelle Code. Das Problem noch einmal ist, das beim Kunden das Fenster "Format beibehalten" ja angezeigt wird, aber er das dann trotzdem als ODT speichert. Bei mir geht es ja. Auch eine manuelle Einstellung "Textdokument = Word 97" direkt unter Optionen klappt nicht. Ich habe die Befürchtung, dass da eine Einstellung nicht richtig gespeichert wird. Der Kunde hat das sowohl mit der 3.4 als auch mit der 4-er Version. Bei mir geht es ja.
Delphi-Quellcode:
{*
Textelemente in OpenOffice ersetzen http://stackoverflow.com/questions/7806041/how-to-search-and-replace-in-odt-open-office-document @param AFileURL Dateiname (file:///) @param ASearch Liste mit den zu ersetzenden Begriffen (Textkennern) @param AReplace Liste mit den Ersatzbegriffen @param theErrorStr ehlermeldung @return False bei einem Fehler } function OpenOfficeReplace(const AFileURL: String; ASearch, AReplace: TStringList; var theErrorStr: String): Boolean; var StarOffice: Variant; StarDesktop: Variant; StarDocument: Variant; FileReplace: Variant; FileParams: Variant; FileProperty: Variant; EmptyParam: Variant; SaveParams: OleVariant; SaveProperty: OleVariant; iReplace: Integer; sSearch: String; sReplace: String; begin LogInFile('PraTexKo OpenOfficeReplace Datei: '+AFileURL); Result:= False; theErrorStr:= ''; try EmptyParam:= VarArrayCreate([0,-1],varVariant); StarOffice := CreateOleObject('com.sun.star.ServiceManager'); StarDesktop := StarOffice.CreateInstance('com.sun.star.frame.Desktop'); FileParams := VarArrayCreate([0, 0], varVariant); FileProperty := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); FileProperty.Name := 'Hidden'; FileProperty.Value := True; FileParams[0] := FileProperty; StarDocument := StarDesktop.LoadComponentFromURL(AFileURL, '_blank', 0, FileParams); FileReplace := StarDocument.CreateReplaceDescriptor; FileReplace.SearchCaseSensitive := False; for iReplace:=0 to ASearch.Count-1 do begin sSearch := ASearch[iReplace]; sReplace:= AReplace[iReplace]; FileReplace.SetSearchString(sSearch); FileReplace.SetReplaceString(sReplace); StarDocument.ReplaceAll(FileReplace); end; SaveParams:= VarArrayCreate([0, 0], varVariant); SaveProperty := StarOffice.Bridge_GetStruct('com.sun.star.beans.PropertyValue'); SaveProperty.Name:= 'FilterName'; SaveProperty.Value:= 'MS Word 97'; SaveParams[0]:= SaveProperty; StarDocument.storeAsUrl(AFileURL, SaveParams); StarDocument.Close(True); StarDesktop.Terminate; StarOffice := Unassigned; Result:= True; except on E: Exception do begin theErrorStr:= E.message; end; end; end { OpenOfficeReplace } ; Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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-2025 by Thomas Breitkreuz