USES ComObj;
//keylist中添加要替换的文本,每行一个
//Vlist中添加替换成的文本,每行一个
//vlist中为空则替换keylist中的每一行为空
//filein是WORD模板文件
//fileout是WORD生成结果
FUNCTION replace(CONST fileIn,fileout: STRING; CONST keylist, vlist: tstrings):
boolean;
VAR
vWord, vDoc, vRange: Variant;
lReturn : Boolean;
i : integer;
BEGIN
TRY
//如果Vlist中的数据行数据少,会报索引超出范围的错误
WHILE keylist.Count >= vlist.Count DO
vlist.Add('');
vWord := CreateOleObject('Word.Application'); //创建Word线程
TRY
//打开要操作的文件
vDoc := vWord.Documents.Open(fileIn);
vDoc.Select; //选取中整个文档
vRange := vDoc.Range; //替换范围
lReturn := True;
FOR i := 0 TO keylist.Count - 1 DO
WHILE lReturn DO
BEGIN
//找到并替代成功则返回 True 共11个参数
lReturn := vDoc.Range.Find.Execute(keylist.Strings, , , , , , , ,
, vlist.Strings,
True);
END;
vDoc.saveas(fileout);
FINALLY
vDoc.Close(True);
vWord.Quit(False);
END;
result := true;
EXCEPT
if varisnull(vdoc) then vDoc.Close(True);
if varisnull(vWord) then vWord.Quit(False);
result := false;
END;
END;
把模板里的要替换文字都放到KEYLIST里去,把新的值放到VLIST中去,指定模板文件名,新文件名就可以了,成功返回TRUE,失败返回FALSE
如果没有安装WORD那就不行了