在操作Word时经常会采用这样的方法:在Word里插入特殊字符串,例如[$FindStr$],然后用查找替换的方式将数据库中的内容插入到Word。这样存在一个问题:如果替换的字符串大于500(大约)个字符,那么就会出现“字符串参量过长”的错误。
这时,用下面的方法代替查找替换的方法:
//ReplaceStr是将要插入的内容
WordApplication.Options.ReplaceSelection := True;
WordApplication.Selection.Find.ClearFormatting;
WordApplication.Selection.Find.Text :=[$FindStr$];
WordApplication.Selection.Find.Replacement.Text :='';
WordApplication.Selection.Find.Forward := True;
WordApplication.Selection.Find.Wrap := wdFindContinue;
WordApplication.Selection.Find.Format := false;
WordApplication.Selection.Find.MatchCase := false;
WordApplication.Selection.Find.MatchWholeWord := false;
WordApplication.Selection.Find.MatchByte := True;
WordApplication.Selection.Find.MatchWildcards := false;
WordApplication.Selection.Find.MatchSoundsLike := false;
WordApplication.Selection.Find.MatchAllWordForms := false;
WordApplication.Selection.Find.Execute(EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication.Selection.TypeText(ReplaceStr);
这时,用下面的方法代替查找替换的方法:
//ReplaceStr是将要插入的内容
WordApplication.Options.ReplaceSelection := True;
WordApplication.Selection.Find.ClearFormatting;
WordApplication.Selection.Find.Text :=[$FindStr$];
WordApplication.Selection.Find.Replacement.Text :='';
WordApplication.Selection.Find.Forward := True;
WordApplication.Selection.Find.Wrap := wdFindContinue;
WordApplication.Selection.Find.Format := false;
WordApplication.Selection.Find.MatchCase := false;
WordApplication.Selection.Find.MatchWholeWord := false;
WordApplication.Selection.Find.MatchByte := True;
WordApplication.Selection.Find.MatchWildcards := false;
WordApplication.Selection.Find.MatchSoundsLike := false;
WordApplication.Selection.Find.MatchAllWordForms := false;
WordApplication.Selection.Find.Execute(EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam,EmptyParam);
WordApplication.Selection.TypeText(ReplaceStr);