在我的这篇《VBScript/VBA批量替换Word指定的内容》文章已经介绍了关于使用VBScript或者VBA查找替换Word的问题,但是在实际操作时,会发现查找和要替换的字符串不能超过一定的数量(大概是500个字符),否则会出现“字符串参量过长”的错误。
其实我们可以通过Selection.TypeText的办法避免这个问题,这个办法只适用于模板的替换,比如设置标记符{%TEMPLATE%},然后替换这个标记符为一段很长的文本。
具体的代码也很简单,我们就以之前那篇文章为例,做下改动,新代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 | Const wdReplaceAll = 2 Set objWord = CreateObject("Word.Application") objWord.Visible = True Set objDoc = objWord.Documents.Open("C:\Scripts\Test.doc") Set objSelection = objWord.Selection objWord.Options.ReplaceSelection = True objSelection.Find.Text = "{%TEMPLATE%}" ' 标记符 objSelection.Find.Forward = True objSelection.Find.MatchWholeWord = True objSelection.Find.Execute objSelection.TypeText "要替换的长文本" |
通过TypeText我们就有效的避免了替换长文本时的限制,但是如何查找长文本,目前我还在寻找较好的解决方案。不过解决了长文本的替换就给我们使用查找替换标记符式的Word模板扫清了障碍。