帮忙看看我的代码,关于打开Word的(100分)

  • 主题发起人 主题发起人 chy.com
  • 开始时间 开始时间
C

chy.com

Unregistered / Unconfirmed
GUEST, unregistred user!
MSWord:=CreateOLEObject('Word.APPlication');
MSWord.Documents.Open(Filename:='C:/新华网网站排名工具/test.doc',ReadOnly:=True);
MSWord.Visible:=0;
MSWord.ActiveDocument.Range(Start:=0,End:=0);
MSWord.ActiveDocument.Range.InsertAfter(Text:=DatetoStr(Date));
MSWord.ActiveDocument.Range.InsertParagraphAfter;
MSWord.ActiveDocument.Range.InsertAfter(Text:=Findit('adchinaanchinaaddfadddwsaf3reftrefsdfaaaaaaaewr','>><<','<dsfsdafds'));
MSWord.ActiveDocument.SaveAS('c:/111111111.doc');

MSWord.ActiveDocument.Close;

这种写法对吗?执行没有问题当时进程中Word没有杀掉,如何解决??

还有我想先写一个Word魔板,里面有表格,表格里用标示代替,想每次通过修改标示生成新的word文件,能给点例子吗?
 
你可以在打开时先判断进程中有没有word,如果有的话,直接调用,如果没有,再创建一个word对象打开word文档,代码如下:
//创建一个word对象
try
Wordapp:=GetActiveOleObject('Word.Application');
except
try
Wordapp:=CreateOleObject('Word.Application');
except
MessageDlg('Word可能没有安装或者安装不正确,请检查原因。', mtError, [mbOk], 0);
exit;
end;
end;
wordApp.Visible:=true;
//创建一个word文档

你所说的模板文件替换标识问题,我给你一个例子,你可以看看:
先定义一个替换的函数
procedure TZzbmglFrm.ChangeWordText(oldtext:Variant;newtext:Variant);
var
FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike,
MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace: OleVariant;
begin
FindText :=oldtext;
MatchCase := False;
MatchWholeWord := True;
MatchWildcards := False;
MatchSoundsLike := False;
MatchAllWordForms := False;
Forward := True;
Format := False;
ReplaceWith :=newtext;
Replace := True;

WordDoc.Range.Find.Execute( FindText, MatchCase, MatchWholeWord,
MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward,
, Format, ReplaceWith, Replace );
end;
注意以上函数有两个参数,第一参数为替换前的文字,第二个为要替换的文字,替换前的文字就是你在word模板文件中加入的标识,要替换的文字你可以是从数据库中查询出来的,调用我就不写了。像这样调用:
ChangeWordText('<#gwmc>',KhDM.QryGwmc.FieldByName('VGWMC').AsString);
(注,我发现changewordtext不能给word文档加入格式符,如回车和换行等,你可以用其他代码来实现这个功能)
 
谢谢!马上验证,但是如何关闭自己打开的进程呢?
 
关于关闭进程的问题,你可以参照这里的其他文章
 
代码在那里?
 
接受答案了.
 
后退
顶部