Entwickler-Ecke

Andere .NET-Sprachen - Word automatisieren


scholei - Di 20.09.05 14:32
Titel: Word automatisieren
Hallo,

ich schreibe eine VCL-Formularanwendung für .NET und benutze
Delphi 2005.
Nach dem ich die Automation über Microsoft.Office.Interop.Word
für Word XP in griff habe, bin ich auf das Problem der Abwärtskompatibilität gestoßen. Sobald ich Word 2000 oder niedriger versuche anzusteuern funktioniert das ganze nicht mehr.

Wie kann ich sicherstellen, dass alle Word Varianten angesteuert werden können?

Gruß

scholei


MisterBum - Di 20.09.05 14:55

Was heisst funktioniert nicht mehr??? Bitte etwas genauer...
Sollen wir Fehlerraten spielen???


scholei - Di 20.09.05 15:04

folgender Fehler tritt auf:

_Application faild

genauere Fehlerbeschreibung kann ich erst heute Abend schreiben, da ich momentan am Projekt sitze.

Gruß

scholei


scholei - Di 20.09.05 18:46

Hollo,

habe jetzt die korrekte Fehlermeldung:

Zitat:
QueryInterface for interface Microsoft.Office.Interop.Word._Application failed


auch noch mal als Dateianhang.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
procedure TFHauptformular.ButtonClick(Sender: TObject);
var wordapp: Microsoft.Office.Interop.Word.Application;
    n : System.&Object;

begin
  wordapp:= Microsoft.Office.Interop.Word.Applicationclass.Create;

  n:= System.Reflection.Missing.Value;

  if (wordapp = nilthen
    begin
      ShowMessage('keine Verbindung!');
      Exit;
    end;
//bis hier ohne Fehler

//Fehler kommt nach Aufruf von:
  wordapp.Visible:= true;
  wordapp.Documents.Open('C:\Datei.doc',n,n,n,n,n,n,n,n,n,n,n,n,n,n);


end;



Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt.


MisterBum - Mi 21.09.05 10:44

Versuch mal folgenden Code, obs mit dem funktioniert...


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
try
  {Es wird zuerst versucht, eine laufende Word-Instanz zu verwenden}
    Word := GetActiveOleObject('Word.Application');
  except
    try
      {Läuft Word noch nicht, wird eine neue Verbindung aufgebaut}
      Word := CreateOleObject('Word.Application');
    except
      {Schlägt sie fehl (Word nicht installiert), gibt es eine Fehlermeldung}
      MessageDlg('Microsoft Word konnte nicht gestartet werden!', mtError, [mbOk], 0);
      exit;
    end;
  end;
  Word.visible := true;


scholei - Mi 21.09.05 11:22

Hallo

die
GetActiveOleObject('Word.Application');
CreateOleObject('Word.Application');

wird bei mir nicht erkannt. Da kommt der Fehler:
nicht deklarierter Bezeichner


obwohl ich ComObj eingebunden habe.

Gruß

scholei


MisterBum - Mi 21.09.05 11:33

Hast du denn die Variable deklariert?


Delphi-Quelltext
1:
Word: Variant;                    


scholei - Mi 21.09.05 11:42

Ja hab ich.


Klaus27 - Di 31.01.06 14:07

Vermutlich fehlt:

uses ..., ComObj, ...;