关于网友提出的“ 用程序操作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