大家快来帮我看看!操纵WORD的问题!(100分)

  • 主题发起人 Larruping
  • 开始时间
L

Larruping

Unregistered / Unconfirmed
GUEST, unregistred user!
MSWord := CreateOLEObject('word.application');
MSWord.visible := true;
MSWord.documents.open('E:/工程报告书.doc');

{以下搜索@unitname,并用相关数据代替}
MsWord.Selection.Find.Execute(FindText := '@unitname',ReplaceWith := Query_ItemVerdict.FieldByName('brcunit').AsString,
Replace :=1,MatchWholeWord := false);

{以下搜索@ProjectName,并用'test'代替}
MsWord.Selection.Find.Execute (FindText:= '@ProjectName',ReplaceWith := 'test',
Replace:= 1 ,MatchWholeWord := false);

{以下搜索@FrameType,并用'test2'代替}
MsWord.Selection.Find.Execute(FindText:= '@FrameType',ReplaceWith := 'test2',
Replace:= 1 ,MatchWholeWord := TRUE);
代码:
我想法是寻找相关的书签并用相关数据替代之,不过上面的代码出现了问题,
执行的结果是只替换了@unitname,而下面的@ProjectName,@FrameType却没有被替换,
这是为什么?该怎样解决?
 
搜索完@unitname 后,selection已经到了文件的最末,所以就不会再替换了,你需要将他移动到文件的最前面
 
To 完颜康:
谢谢!请问代码该怎么写?
那些有比较详细的OLE帮助?
 
同意完颜康,只需在每次搜索前加上
Msword.Selection.End := 0;
 
VBA HELP : Const wdFindContinue = 1

MsWord.Selection.Find.Execute(FindText:= '@ProjectName',ReplaceWith := 'test',
Replace:= 1 ,MatchWholeWord := false,Wrap:= wdFindContinue);
 
严肃同意pt_email [:D]
 
to ysai:
加上 Wrap:= wdFindContinue 会提示 wdFindContinue未定义!
用 Msword.Selection.End := 0; 问题解决

请问大家哪里有这方面详细的介绍?
 
VBA HELP : Const wdFindContinue = 1
一些东东可以在WORD中用VBA先试试,再到DELPHI中使用

VBA的帮助里面有很详细的资料,我以前就是用VB的:)
 
顶部