ole操作word问题(100分)

  • 主题发起人 主题发起人 mingzi411
  • 开始时间 开始时间
M

mingzi411

Unregistered / Unconfirmed
GUEST, unregistred user!
相关代码如下:
///////////////启动word
//检查word是否已经启动
FWord:=GetActiveOleObject('Word.Application');
if FWord.Visible=False then //已经启动 检查word是否已经显示
begin
FWord.Quit;//如果不可见就退出这个word
FWord:=Unassigned;
raise Exception.Create('');//引发异常 重新启动word
end;
if FWord.Documents.Count<>0 then
bNew:=False
else //如果启动了word,但没有word文档 置新建标志为真
bNew:=True;
except
try //如果没有启动就启动Word
FWord:= CreateOleObject('Word.Application');
bNew:=True;
except
MessageDlg('创建Word对象失败!',mtError,[mbOK],0); //mtInformation
Result:=False;
Exit;
end;
end;
if bNew then
FWord.Visible:=False;//新启动的word应该隐藏

///////////根据模板创建word文档
FDoc:=FWord.Documents.Add(TempLatePath,False,0,False);
………………………………………………
后台处理文档代码(插入文本、域填充之类)
………………………………………………
问题是运行包含上面代码的程序时,此时如果有打开的word文档
有的时候会弹出一个保存word的对话框,有的时候还有远程服务没有响应的对话框,而我们的要求所有的word的处理都是在后台处理的,处理好之后保存在本地磁盘中再展现出来。大家帮忙分析下原因,该如何解决。谢谢
 
你在检查word是否已经启动之前应该用代码判断一下内存中是否有WORD.EXE进程,如果有要作出提示或处理,然后继续即可。
 
是的,应该先判断是否有WORD进程,如果有,则提示一下,手工关闭或提示后由程序关闭。
 
这样的,提示保存的是normal.dot,并说normal.dot正在被其他程序使用,我也不知道怎么就改动了normal.dot这个模板
 
别管它提示什么,先检查进程才是正道
 
就是检查出有word进程又怎么办?用户操作你的程序时难道就不能打开一个word文档
 
.DisplayAlerts[0] := False;
.Visible[0] := False;
.Interactive[0] := False;
 
后退
顶部