求例程Word字符替换(200分)(200分)

  • 主题发起人 主题发起人 popogens
  • 开始时间 开始时间
P

popogens

Unregistered / Unconfirmed
GUEST, unregistred user!
学了好久也搞不好。我用的是D6,可能其他例子版本不一样吧,WordDocument1.Content.Find.Execute通过调试却在执行时错误,WordApplication1.Selection.find.execute的结果也是一样。

干脆求一个例程,要求:
  1能用Delphi6实现
  2要例程,贴在网页上的拷回去我怕又不行
3打开Word后,要求把也Edit1.Text相同的字符替换成Edit2.Text
不胜感激!!
 
哦,忘了我的QQ46060319,谢谢!
 
前文中说错了,“通过调试”应访是“通过编译”
另外,哪位如果能用“打开Word文档——添加一个宏(自定义的文本)——执行宏——删除该宏”这样的方式实现也可以。
有高手吗?不要分数的要¥也可以啊
 
试试WordDocument1.Selection.Find.Execute
 
$就不要了,告诉你用office控件写的程序会与office版本相关,挺烦,用ole就不会有这样的麻烦。本论坛有一经典贴,查一查研究一下就会了,不难。我以前也回过不少word方面的贴请参考。
 
newsmile能不能教一点ole怎么用?不是ole控件吧?
 
请自行研究,这一部分知识学会了还是有用的,主要看ole相关部分
http://www.delphibbs.com/delphibbs/dispq.asp?lid=737517
以下部分是我从程序中节选出来的并不完整仅供参考
uses comobj, Variants, word2000;
...
var
Word, stdDoc, cmpdoc, stdtmp, cmptmp: OLEVariant;

...
try
word := GetActiveOleObject('word.application');
except
try
word := CreateOleObject('word.application');
except
showmessage('打开word出错');
end;
end;
Word.Visible := False; //True;
stdDoc := CreateOleObject('Word.Document');
...
//查找四号红色格式
function findreplace(scr: variant): Boolean;
begin
scr.activate;
scr.application.selection.Find.ClearFormatting;
scr.application.selection.find.Font.size := 14;
scr.application.selection.find.Font.Color := wdColorRed;
scr.application.selection.Find.Forward := True;
scr.application.selection.Find.Format := True;
scr.application.selection.find.Execute;
result := scr.application.selection.find.found;
end;
 
对不起呀,之前我关于Ole、server、container的东西一个都没做过。能不能给一个包含一个用dialog对话框并打开的过程,谢谢。
另外,上面那个过程似乎寻找的是字体,我要找具体字包含“[XXX]”行吗?还要有替换,替换我好象也没找到。
如果有实例的话,麻烦告诉我,谢谢。最好是发给QQ46060319。
 
我要实现的东西大体上可以这样描述:

启动一个窗口,该窗口中有三个Edit,Edit1 Edit2 Edit3,和一个Button

Button的点击事件是:
begin
把“C:/模板.doc”(作为一个模板来使用)复制到“D:/模板.doc”
打开“D:/模板.doc”,并且
将文中若干个“[@AAA@]”替换为Edit1.Text
将文中若干个“[@BBB@]”替换为Edit2.Text
将文中若干个“[@CCC@]”替换为Edit3.Text
保存文档
“确定”后关闭文档
end;

麻烦你了,谢谢,呵呵。
 
高手你的QQ是多少啊?
 
关键点都告诉您了,第一个引号前是必须use的单元,第二个引号与第一个引号之间是要设置的变量,第三个引号与第二个引号之间是建立ole对象(建了两个),第四个引号与第三个引号之间是一个查找格式的示例(连格式都能查了难道还不能查找替换文本?),如果还是不会查文本请参考下面的帖子,这样您就学会了怎样录制宏并将其转为delphi语句。另外网上应该还能找到一篇有关delphi利用word模板来控制word文档的文章,不过因为是用server控件的,这样就不可避免地会与office版本相关了。
http://www.delphibbs.com/delphibbs/dispq.asp?lid=902680
对不起了,我没有QQ,我用MSN:newsmilecn@hotmail.com
 
不好意思呀,按照上面的代码我只做到打开Word——新建一个空白文档,
接下去我还想做的事是:把“C:/模板.doc”作为一个模板打开(或称为“新建”?),然后把所有的“AAA”全部替换成“BBB”,把所有的“CCC”替换成“DDD”。
诚心求教啊,谢谢。
单位没有MSN。回家加你
 
试是试得真辛苦啊,还好总算把基本的解决了。
把主要的贴上来吧……
三个TEdit:EFile用其Text指向模板文件名,E1、E2用其Text作为替换前、后的字符

uses comobj, word2000,

var OleW :Variant;
begin
try
OleW := GetActiveOleObject('word.application');
except
try
OleW := CreateOleObject('word.application');
except
Showmessage('打开Word出错,请检查您的电脑是否已经安装MicroSoft Office');
end;
end;
OleW.Visible := True;
OleW.Activate;
Olew.Documents.Add(Template := EFile.Text, NewTemplate := true, Visible := true);
OleW.Application.Selection.Find.ClearFormatting;
OleW.Application.Selection.Find.Replacement.ClearFormatting;
OleW.Application.Selection.Find.Text := WideString(E1.Text);
OleW.Application.Selection.Find.Replacement.Text := WideString(E2.Text);
OleW.Application.Selection.Find.Execute(replace := wdReplaceAll);
end;

另求,哪位高手知道:Delphi如何操作才能把一个打开的Word文档内容粘贴接到另一个打开的Word文档的后面?
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部