现在的位置: 首页 > 综合 > 正文

在delphi中调用word并且打开一个word文档

2014年03月19日 ⁄ 综合 ⁄ 共 2209字 ⁄ 字号 评论关闭

先uses Shellapi;
再调用:
  ShellExecute(Handle,'open',PChar('d:\ex.doc'),nil,nil,SW_SHOWNORMAL);
//////////////////////////
uses ComObj ;
procedure TForm1.Button1Click(Sender: TObject);
var
  vWord,vDoc : Variant ;
begin
  vWord := CreateOleObject('Word.Application') ;//创建Word线程
  try
    //打开要操作的文件
    vDoc := vWord.Documents.Open('C:\My Documents\AAAc.Doc');
  except
    showmessage('not found wordapp');
  end ;
end;
//////////////////////////////////////
Olecontainer1.CreateObjectFromFile('文件名',false);
  OleContainer1.DoVerb(0);
/////////////////////////////////
var
  ItemIndex :OleVariant;
  FileName, ConfirmConversions, ReadOnly, AddToRecentFiles,
  PasswordDocument, PasswordTemplate, Revert,
  WritePasswordDocument, WritePasswordTemplate, Format,encoding,visible: OleVariant;
begin

if not OpenDialog1.Execute then
  Exit;

 {Open document}
  FileName:= OpenDialog1.FileName;
  ConfirmConversions:= False;
  ReadOnly:= False;
  AddToRecentFiles:= False;
  encoding:=true;
  PasswordDocument:= '';
  PasswordTemplate:= '';
  Revert:= True;
  WritePasswordDocument:= '';
  WritePasswordTemplate:= '';
  Format:= wdOpenFormatDocument;

  WordApplication1.Documents.Open(FileName,ConfirmConversions,ReadOnly,AddToRecentFiles,PasswordDocument,PasswordTemplate,  Revert,WritePasswordDocument,WritePasswordTemplate,Format,Encoding,visible);
  ItemIndex:=1;
  WordDocument1.ConnectTo(WordApplication1.Documents.Item(ItemIndex));
  WordApplication1.Visible:=True;

  {Turn Spell checking of because it takes a long time if enabled and slows down Winword}
  WordApplication1.Options.CheckSpellingAsYouType := False;
  WordApplication1.Options.CheckGrammarAsYouType := False;
end;
//////////////////////////////////////
var
  vWord: Variant ;
begin
  vWord := CreateOleObject('Word.Application') ;//创建Word线程
  try
   vWord.Documents.Open(FileName:='d:\a.Doc', ReadOnly:=True);//打开外部Word文档
   vWord.Visible := 1;
  except
    showmessage('not found');
  end ;
end;
////////////////////////////////////////////// 解决了OLE Container只显示一页的问题,供后生菜鸟参考:
把OLE Container的AutoActive属性设为aaGetFocus即可。
实际上是因为你的Ole Container 里面的对象没有被激活的原因
只需要在Ole Container 获得焦点的时候激活它就可以了,就是
设置AutoActive属性aaGetFocus即可,或者AutoActive属性设为
aa慢Manual,在调用DoVerb(ovShow)也可以

抱歉!评论已关闭.