![]() |
MS Word mit Delphi öffnen
Hallo Zusammen,
mit folgendem Code versuche ich Word zu öffnen: Delphi-Quellcode: markieren
Delphi-Quellcode:
procedure TForm1.DatenClick(Sender: TObject);
begin if assigned(WordApplication1) then begin WordApplication1.Connect; WordApplication1.Visible:=true; end; end; Ich bekomme aber immer die Fehlermeldung: "Interfaces nicht unterstützt". Kann mir jemand sagen, was ich da falsch mache. Habe unter TurboDelphi 2006 die Komponente WordApplication und WordDocument auf das Form "gezogen" Vielen Dank im Voraus Ykcim [edit=mkinzler]Delphi-Tag eingefügt Mfg, mkinzler[/edit] |
Re: MS Word mit Delphi öffnen
Sorry, mein Browser hatte sich aufgehängt, und ich dachte, dass das Thema nicht eingestellt worden war!
Sorry! :oops: |
Re: MS Word mit Delphi öffnen
Kein Problem :-D
|
Re: MS Word mit Delphi öffnen
Hast Du Word auf dem Rechner installiert? Wenn ja, welche Version? Und welche Office-Version hast Du bei der Installation von Turbo Delphi ausgesucht (Könnte ja sein, dass das installierte Interface "neuer" ist und Dein Word älter...) ?
Viele Grüße |
Re: MS Word mit Delphi öffnen
Hallo,
ich haba Office 2003 installiert und muss gestehen, dass ich nicht mehr weiß, welche Version ich bei der Installation von TurboDelphi 2006 verwendet habe... Ich werde mal suchen, ob ich etwas finde. Hast Du eine Idee, wo ich suchen muss? Danke Ykcim |
Re: MS Word mit Delphi öffnen
Hallo,
Ich scheine Office xp angegeben zu haben. Wie kann ich das auf Office 2003 ändern? Ykcim |
Re: MS Word mit Delphi öffnen
Brauchst du nicht, die COM-Api ist (bzw. wahr bis O2k7) abwärtskompatibel.
Für O2k3 gibt es keinen spezifischen Wrapper von CG |
Re: MS Word mit Delphi öffnen
Aber ich habe immernoch die Fehlermeldung... Ich habe gerade mal die noch zur Auswahl stehende Office 2000 Version verwendet - ohne Erfolg.
Hat irgendwer eine Idee, wie ich Word über Delphi geöffnet bekomme? Vielen Dank im Voraus Ykcim |
Re: MS Word mit Delphi öffnen
Hallo,
eigentlich bin ich der Meinung, dass Dein Wordaufruf korrekt ist. Vor längerer Zeit hatte ich da auch mal mit Problemen zu kämpfen. Der folgende Quelltext ist daraus entnommen, eventuell hilft er Dir als Denkanstoß. Seinerzeit wurde der Zugriff auf Word nicht über die Komponenten gemacht, sondern über CreateOLEObject bzw. GetActiveOleObject, wenn schon eine Instanz von Word lief. Der Quelltext ist mit Sicherheit nicht in einem verwendbaren Zustand.
Delphi-Quellcode:
// Eventuell Felder aktuallisieren im Optionendialog.Drucken von Word ausschalten,
// sonst kann es passieren, dass den Anwendern beim Drucken Daten verloren gehen. // Den Schalter Feldfunktionen Optionendialog.Ansicht ausschalten, sonst sieht // man den Inhalt der Felder nicht. // WordBool -> True und False werden durch WordBool(1) und WordBool(0) dargestellt. unit WordSchnittstelle; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleServer, Grids, ValEdit, ExtCtrls, IniFiles, ActnList, ComObj, ActiveX; type TfmWordSchnittstelle = class(TForm) pnMain: TPanel; pnTop: TPanel; btnWordStarten: TButton; btnWordBeenden: TButton; vleWordVorlagen: TValueListEditor; odVorlagen: TOpenDialog; procedure btnWordStartenClick(Sender: TObject); procedure btnWordBeendenClick(Sender: TObject); function WordStarten(sTemplate : String) : Boolean; procedure WordBeenden; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormShow(Sender: TObject); procedure FormKeyPress(Sender: TObject; var Key: Char); function CreateWord : Boolean; private { Private-Deklarationen } CanClose : Boolean; sCaption : String; sCaptionTemp : String; public { Public-Deklarationen } FVisible: Boolean; FWord: Variant; FWordCreated: Boolean; FWordDoc : Variant; end; var fmWordSchnittstelle: TfmWordSchnittstelle; implementation {$R *.dfm} function tfmWordSchnittstelle.CreateWord : Boolean; begin FWordCreated := False; Try FWord := GetActiveOleObject('Word.Application'); FWordCreated := True; Except on e : Exception Do Begin // MessageDlg(e.Message + #13 + 'Word.Application not Active',mtError,[mbok],0); FWordCreated := False; End; End; If Not FWordCreated Then Begin try FWord := CreateOLEObject('Word.Application'); FWordCreated := True; except on e : Exception Do Begin // MessageDlg(e.Message,mtError,[mbok],0); FWordCreated := False; End; End; End; FWord.Visible := True; If FWordCreated Then Begin Try FWordDoc := CreateOleObject('Word.Document'); FWordDoc.Activate; FWordCreated := True; Except on e : Exception Do Begin MessageDlg('Der Aufruf von Word ist fehlgeschlagen.' + #13 + 'Ursache: ' + e.Message,mtError,[mbok],0); FWordCreated := False; End; End; End; Result := FWordCreated; End; function TfmWordSchnittstelle.WordStarten(sTemplate : String) : Boolean; Var ovTemplate : OleVariant; ovVisible : OleVariant; sError : String; Begin Result := False; ovVisible := WordBool(0); odVorlagen.Title := 'Bitte Serienbriefvorlage auswählen.'; If CreateWord Then Begin If Trim(sTemplate) <> '' Then Begin // wurde uns gesagt, welche Vorlage? ovTemplate := vleWordVorlagen.Values[sTemplate]; Try // diese öffnen FWordDoc := FWord.Documents.Add(ovTemplate,WordBool(0),EmptyParam, EmptyParam); Result := True; Except on e : Exception Do Begin MessageDlg('Falsche WinWord-Version.' + #13 + e.Message,mtError,[mbok],0); FWord := UnAssigned; End; End; End Else If odVorlagen.Execute Then Begin // es wurde nicht gesagt, welche Vorlage, ovTemplate := odVorlagen.FileName; // über Dialog Vorlage auswählen lassen. Try FWordDoc := FWord.Documents.Add(ovTemplate,WordBool(0),EmptyParam, EmptyParam); Result := True; Except on e : Exception Do Begin MessageDlg('Falsche WinWord-Version.' + #13 + e.Message,mtError,[mbok],0); FWord := UnAssigned; End; End; End Else Begin sError := 'Fehlerhafter Aufruf der Wordschnittstelle.'; MessageDlg(sError,mtInformation,[mbOk],0); End; End Else Begin MessageDlg('Word konnte nicht gestartet werden',mtError,[mbok],0); End; End; procedure TfmWordSchnittstelle.WordBeenden; Begin FWordDoc.Activate; FWord.Activate; FWordDoc := Unassigned; FWord := Unassigned; End; procedure TfmWordSchnittstelle.btnWordStartenClick(Sender: TObject); Var sTemplate : String; begin sTemplate := vleWordVorlagen.Cells[0,vleWordvorlagen.Row]; WordStarten(sTemplate); end; procedure TfmWordSchnittstelle.btnWordBeendenClick(Sender: TObject); begin WordBeenden; end; procedure TfmWordSchnittstelle.FormCreate(Sender: TObject); Var iniVorlagen : tIniFile; begin CanClose := True; sCaption := Caption; sCaptionTemp := Caption; iniVorlagen := tIniFile.Create(Application.ExeName + '.ini'); iniVorlagen.ReadSectionValues('WORDVORLAGEN',vleWordVorlagen.Strings); iniVorlagen.Free; vleWordVorlagen.Col := 1; vleWordVorlagen.Row := 1; end; procedure TfmWordSchnittstelle.FormClose(Sender: TObject; var Action: TCloseAction); begin If CanClose Then Begin Action := caHide; End Else Begin Action := caNone; End; end; procedure TfmWordSchnittstelle.FormShow(Sender: TObject); begin CanClose := True; end; procedure TfmWordSchnittstelle.FormKeyPress(Sender: TObject; var Key: Char); begin Case Key Of #32..#255 : Begin Caption := sCaptionTemp + ' *'; End; End; end; end. |
Re: MS Word mit Delphi öffnen
Vielen Dank für die Antwort,
ich werde sie am WE mal versuchen für mich umzusetzen... Ykcim |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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