您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> 用程序操作word出错,怎么办?怎么屏蔽防火墙?

用程序操作word出错,怎么办?怎么屏蔽防火墙?

来源:网络整理     时间:2016/7/11 1:27:27     关键词:

关于网友提出的“ 用程序操作word出错,怎么办?怎么屏蔽防火墙?”问题疑问,本网通过在网上对“ 用程序操作word出错,怎么办?怎么屏蔽防火墙?”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 用程序操作word出错,怎么办?怎么屏蔽防火墙?
描述:

我在程序写了
try
//用delphi操作word,利用dba编写一些小程序,
  if FileExists(Leftstr(sFileName,Length(sFileName)-4)+'Tmp.Doc') then   
DeleteFile(Leftstr(sFileName,Length(sFileName)-4)+'Tmp.Doc');
  WordApp := GetWordObject('Word.Application');
  wordApp.Visible := false;
  //赋值:工程名称、分项工程名称
  WordApp.Documents.open(sFileName);
  WordApp.ActiveDocument.Tables.Item(2).Cell(1, 2).Range.Text := cmbProj.Text;
  WordApp.ActiveDocument.Tables.Item(2).Cell(2, 2).Range.Text := tvSubsection.Selected.Text;
  WordApp.ActiveDocument.SaveAs(Leftstr(sFileName,Length(sFileName)-4)+'Tmp.Doc');
  //wdSaveChanges为-1,wdWordDocument为0
  WordApp.ActiveDocument.Close;
except
//取得word出错的信息,然后关闭它
  KillWordObject();
end;
但不能成功的捕捉错误,反而提示:"被呼叫方拒绝接收呼叫"的错误;
求救怎么做才能使程序变稳定;顺便问一下,有谁知道怎么用程序屏蔽office中的防火墙,因为有防火墙在用
程序去打开word又慢又容易出问题。。
//备注:KillWordObject()的函数如下
var
  wordapp:Variant;
  wnd : HWND;
  sWordName : string;
begin
try
  Wordapp:=GetActiveOleObject('Word.Application');//取得当前word的应用程序
  sWordName := Wordapp.ActiveDocument.Name;
  sWordName := sWordName + ' - Microsoft Word';
//ShowMessage(sWordName);
  wnd:=Findwindow(nil,pChar(sWordName));
   if wnd>0 then sendMessage(wnd,WM_CLOSE,0,0);//发送关闭消息
Except
  Wordapp.Quit;//强行退出整个word应用程序
end;//end try
函数:GetActiveOleObject('Word.Application');//取得当前word的应用程序:如下示
function GetActiveOleObject(const ClassName: string): IDispatch;
var
  ClassID: TCLSID;
  Unknown: IUnknown;
begin
  ClassID := ProgIDToClassID(ClassName);
  OleCheck(GetActiveObject(ClassID, nil, Unknown));
  OleCheck(Unknown.QueryInterface(IDispatch, Result));
end;


以上介绍了“ 用程序操作word出错,怎么办?怎么屏蔽防火墙?”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2505990.html

相关图片

相关文章