Announcement

Collapse
No announcement yet.

Datei mit MSWord drucken?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datei mit MSWord drucken?

    Ziel:
    Eine Textdatei (*.rtf, *.doc, ...) von Delphi.NET aus mit MSWord drucken.

    Bisher/Problem:
    Ich habe das in Delphi7 schon gemacht, aber bei der Übername des Codes stellt sich Delphi8 etwas bockig.
    Ich habe zuerst eine Referenz auf MSWORD9.OLB gemacht. Dann folgt der Testcode (Das ist praktisch eine Abschrift aus Delphi7 - dort hats funktioniert):

    uses
    Word,Printers;

    {$R *.nfm}

    procedure TWordTester.Button1Click(Sender: TObject);
    var
    vMSWord : word.Application; //Word.ApplicationClass;
    wd2000: Word._Document;
    obj : TObject;
    fn, ovTrue, OvFalse, ovis, oCC, oRO: TObject;

    begin
    if opendialog1.Execute then
    begin
    obj := TObject.Create;
    fn:=TObject(OpenDialog1.FileName);
    ovTrue := TObject(true);
    ovFalse := TObject(false);
    ovis := TObject(false);
    oCC := TObject(false);
    oRO := TObject(false);
    vMSWord := Word.ApplicationClass.Create;

    //??? : in Delphi7 steht hier: vMSWord.Connect;

    vMSWord.ActivePrinter:=Printer.Printers[Printer.PrinterIndex];
    wd2000:=vMSWord.Documents.Open(fn, oCC, oRO, ovFalse, obj, obj,
    obj, obj, obj, obj,
    obj, ovis);
    wd2000.Activate;
    wd2000.PrintOut(ovfalse, obj, obj, obj, obj, obj,
    obj, obj, obj, obj, obj, obj,
    obj, obj, obj, obj, obj, obj,obj);
    wd2000.Close(ovFalse,obj,obj);
    wd2000.Quit(ovFalse,obj,obj);

    end;
    end;

    Das Objekt vMSWord wird ohne Probleme kreiert. Sobald ich aber auf irgend eine Property von vMSWord zugreifen will, kommt folgender Fehler: "QueryInterface for interface Word._Application failed".
    Der Zustand von vMSWord sieht auch danach aus: ein Zugriff auf vMSWord ist okay, auf eine Property davon endet aber in einem AccessViolation.

    Wo liegt das Problem, bez. was fehlt noch?

    Ich vermute stark, dass das mit der Methode "Connect" zu tun hat, die ich in der Schnittstelle nicht mehr gefunden habe. Oder wie macht man es dann in Delphi.NET?

    PS: Für den Fehler ist es egal, ob ich als Typ für vMSWord word.Application oder word.ApplicationClass nehme.
Working...
X