首页 > 解决方案 > 计算 VBA 中“全部替换”所做的替换

问题描述

我正在研究一个可以解析文档并在需要时修改样式的宏。到目前为止,我的一个子使用Find&Execute和一个循环来遍历所有带有定义的段落Style。它工作得很好,并且很容易知道修改了多少次。但是,它似乎.Execute Replace:=wdReplaceAll效率更高,但不会在 VBA 中返回后面的信息,即使它在 Word 中直接使用时会显示(使用Ctrl+ H)。

我怎样才能绕过这个问题来计算替换的数量?

提前非常感谢。

标签: vbams-word

解决方案


您可以结合 Word 的内置查找和替换以及使用正则表达式库(Microsoft VBScript 正则表达式 5.5)的搜索和替换来完成此操作。

VBScript 正则表达式不能搜索样式,只能搜索文本,但可以提供找到的匹配数。

因此,您首先搜索并替换您感兴趣的样式的段落标记(^p + 样式)。您将段落标记替换为修改后的段落标记,例如“###^p”,小心替换为相同的样式。

然后,您使用正则表达式搜索和替换来查找段落标记修饰符并将其替换为空,从而恢复原始文本。正则表达式有一个 .Matches.Count 方法,它将为您提供 ### 的替换次数。

您可能会找到以下帮助的堆栈溢出链接

如何在 word 中使用 VBA (MACRO) 使用/启用(RegExp 对象)正则表达式


推荐阅读