Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Mit Word eine *.rtf öffnen und abspeichern unter *.doc (https://www.delphipraxis.net/75292-mit-word-eine-%2A-rtf-oeffnen-und-abspeichern-unter-%2A-doc.html)

binio 17. Aug 2006 09:33


Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Hallo möchte in Delphi eine test.rtf dokument durch Word öffnen dann soll die standart konvertierung gewählt werden und dieses als test.doc gespeichert werden.
Das Ganze soll passieren wenn man ein Button konvert drückt.
Welche Datei geöffnet werden soll steht in ein Editfeld und wo hin sie gespeichert werden soll auch.
Bis jetzt hab ich das raus bekommen:(nicht viel)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
v:OleVariant;
Result:String;
begin
  v:=CreateOleObject('word.application');
  try
    Result:=v.Options.DefaultFilePath[8];
  finally
    v.Quit;
    Application.MessageBox(PChar(Result), 'MessageBox', MB_ICONWARNING or MB_OK);
  end;
end;

end.
Ich danke schonmal im vorraus für jede Hilfe

Robert

Jelly 17. Aug 2006 09:45

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Für so Sachen geh ich immer hin: Starte Word, starte eine Makroaufzeichnung und führe deine Operationen aus, spriche RTF laden und wieder als DOC abspeichern. Dann kuckst Du dir den VBA Code an und übersetzt das nach Delphi.

binio 17. Aug 2006 11:01

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Super Idee auch für die Zukunft danke:
Hab das mal gemacht und sowas rausbekommen:

Delphi-Quellcode:
Sub Makro1()
'
' Makro1 Makro
' Makro aufgezeichnet am 17.08.2006 von Robert Slowikowski
'
    ChangeFileOpenDirectory "C:\"
    Documents.Open FileName:="test.rtf", ConfirmConversions:=False, ReadOnly:= _
        False, AddToRecentFiles:=False, PasswordDocument:="", PasswordTemplate:= _
        "", Revert:=False, WritePasswordDocument:="", WritePasswordTemplate:="", _
        Format:=wdOpenFormatAuto
    ActiveDocument.SaveAs FileName:="test.doc", FileFormat:=wdFormatText, _
        LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
        :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
        SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
        False
End Sub
ich denke man kann vieles weglassen und daraus ist dann das geworden:
Delphi-Quellcode:
Sub Makro1()
'
' Makro1 Makro
' Makro aufgezeichnet am 17.08.2006 von Robert Slowikowski
'
    Documents.Open FileName:="c:\test.rtf", ConfirmConversions:=False, Format:=wdOpenFormatAuto
    ActiveDocument.SaveAs FileName:="c:\test.doc", FileFormat:=wdFormatText, AddToRecentFiles:=True
End Sub
Meine Frage nun ... wie geht es weiter ?

Jelly 17. Aug 2006 11:10

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Zitat:

Zitat von binio
Meine Frage nun ... wie geht es weiter ?

Importier Dir als allererstes die Typbibliothek (Projekt->Typbibliothek importieren)... Aus der langen Liste wählst Du dann "Microsoft Word 11.0 Object Library (Version 8.3)" und dann "Unit anlegen". Das erzeugt Dir eine Unit namens Word_TLB. Darin enthalten sind alle Funktionen und Konstanten, die Du benötigts um über OLE das MS Word zu steuern.

Folgender Delphi Code sollte dann den VBA übersetzen:

Delphi-Quellcode:
uses word_tlb, comobj ;

procedure LoadAndSave ;
var
  V : variant ;
begin
     V := GetActiveOleObject('Word.Application');
     V.Documents.open (FileName:='c:\test.rtf', ConfirmConversions:=False, Format:=wdOpenFormatAuto) ;
     V.ActiveDocument.SaveAs (FileName:='c:\test.doc', FileFormat:=wdFormatText, AddToRecentFiles:=True) ;
end ;

binio 17. Aug 2006 11:36

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Das mit den Importieren gestalltet sich schwer ;(

Ich hab nur die Microsoft Word 9.0 Object Libarty(Version 8.1) zu importieren.
Wenn ich dann auf Weiter klicke kommt eine Fehlermeldung

Zitat:

"Cannot create file"c:\programme\delphi10lite\Imports\Office_TLB. dcr".System kann den angegebenen Pfad nicht finden"
Ist mein Office zu alt für das neue Delphi 10 ?

mkinzler 17. Aug 2006 11:38

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Zitat:

Ist mein Office zu alt für das neue Delphi 10 ?
Nein.

Existiert das obige Verzeichnis?

binio 17. Aug 2006 11:42

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
nein:

Unter c:\Programme\delphi10lite\

existieren nur:
Bin
HelpD7
lib
License
Obirepos
QualityCentral
Schemas
source

Sollte ich etwas den Ordner mal anlegen ?

mkinzler 17. Aug 2006 11:45

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Zitat:

Sollte ich etwas den Ordner mal anlegen ?
Ein Versuch wärs wert. ;-)

BTW. Was ist Delphi 10 lite?

binio 17. Aug 2006 11:50

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
Hehe manche dinge sind soch so einfach ;)
Es hat nun geklappt :)
Danke vielmals.
Jelly und mkinzler


Meine Delphi Version ist:
Borland® Delphi® for Microsoft® Windows™ Version 10.0.2166.28377 Update 1 Copyright © 2005 Borland® Software Corporation. All Rights Reserved.
Arbeite an Der Fern-Uni-Hagen als Softwareentwickler mit Delphi.
Kann sein das ich deswegen etwas neuere Software besitze.
Ich finde es auf jedenfall besser als mein altes Delphi 7 was ich vorher hatte.


Ok danke nochmal für die Hilfe

binio 17. Aug 2006 12:03

Re: Mit Word eine *.rtf öffnen und abspeichern unter *.doc
 
verda..t hab eigentlich nichts geändert nur das es auch wieder geschlossen werden soll und es kommt nun:

Project rtfzudoc.exe raised exection class EOleSysError with message' Vorgang nicht verfügbar'

Dan kann ich Break , continue und help drücken. Egal was ich davon drücke mein Delphi und die Exe stürtzt ab ;(



Woran kann das liegen ?
Delphi-Quellcode:

unit rtfzudoc;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj, word_tlb;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
V:OleVariant;
Result:String;
begin
     V := GetActiveOleObject('Word.Application');
     V.Documents.open (FileName:='c:\test.rtf', ConfirmConversions:=False, Format:=wdOpenFormatAuto) ;
     V.ActiveDocument.SaveAs (FileName:='c:\test2.doc', FileFormat:=wdFormatText, AddToRecentFiles:=True) ;
end;

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz