Einzelnen Beitrag anzeigen

JoelH
(Gast)

n/a Beiträge
 
#1

WORD mergefield via OLE ersetzen. Aber wie ?

  Alt 22. Jul 2003, 10:32
Ich hab es so probiert
http://www.delphipraxis.net/internal...rd+application

also mein Code sieht dann so aus :
Delphi-Quellcode:
Procedure WordOeffnen(datei: string);
var oV_Word : OleVariant;
     wnd_Word : hwnd;
    s_WndName: string;
    i : integer;
    b_suchen : boolean;
begin
  { Word schon geöffnet ? }
  //oV_Word := CreateOleObject('Word.Basic');
  oV_Word := CreateOleObject('Word.Application');
  s_WndName:='Microsoft Word - ';
  b_suchen:=true;
  i:=Length(datei);
  while (i>1) and b_suchen do
    if datei[i]='\'
      then b_suchen:=false
      else Dec(i);
  if not b_suchen then s_WndName:=s_WndName+Copy(datei, i+1, Length(datei)-i);
  wnd_Word:=FindWindowEx(0, 0, 'OpusApp', PChar(s_WndName));
  if wnd_Word = 0
    then begin
    {
      oV_Word.AppMaximize;
      ov_Word.AppShow;
      oV_Word.FileOpen(datei);
    }

    ov_Word.visible := true;
    ov_word.activate;
    ov_word.documents.open(datei);
    //ov_Word.run('AutoNew.MAIN');
    ov_word.ActiveDocument.FormFields.Item('MANDANT').Result:='Test';
    end
    else begin
      SetForeGroundWindow(wnd_Word);
      if IsIconic(wnd_Word) then OpenIcon(wnd_Word);
         end;
end;
wichtig sind die Zeilen
Delphi-Quellcode:
ov_Word.visible := true;
    ov_word.activate;
    ov_word.documents.open(datei);
    //ov_Word.run('AutoNew.MAIN');
    ov_word.ActiveDocument.FormFields.Item('MANDANT').Result:='Test';
Leider meint er dass die letzte Zeile nicht geht, der Fehler ist
Zitat:
Das Angeforderte Element ist nicht in der Sammlung vorhanden
Was für ein Element ist nicht in welcher Sammlung vorhanden frag ich mich da ?

Die Vorlage ist ein .DOT File welches über ein VB Makro betrieben wird. Ich möchte das ganze Makro aber rauswerfen und Delphi die Arbeit erledigen lassen !

Das Feld MANDANT ist vorhanden, es ist von Typ Mergefield.
  Mit Zitat antworten Zitat