vba - 计算 VBA 中“全部替换”所做的替换
问题描述
我正在研究一个可以解析文档并在需要时修改样式的宏。到目前为止,我的一个子使用Find
&Execute
和一个循环来遍历所有带有定义的段落Style
。它工作得很好,并且很容易知道修改了多少次。但是,它似乎.Execute Replace:=wdReplaceAll
效率更高,但不会在 VBA 中返回后面的信息,即使它在 Word 中直接使用时会显示(使用Ctrl+ H)。
我怎样才能绕过这个问题来计算替换的数量?
提前非常感谢。
解决方案
您可以结合 Word 的内置查找和替换以及使用正则表达式库(Microsoft VBScript 正则表达式 5.5)的搜索和替换来完成此操作。
VBScript 正则表达式不能搜索样式,只能搜索文本,但可以提供找到的匹配数。
因此,您首先搜索并替换您感兴趣的样式的段落标记(^p + 样式)。您将段落标记替换为修改后的段落标记,例如“###^p”,小心替换为相同的样式。
然后,您使用正则表达式搜索和替换来查找段落标记修饰符并将其替换为空,从而恢复原始文本。正则表达式有一个 .Matches.Count 方法,它将为您提供 ### 的替换次数。
您可能会找到以下帮助的堆栈溢出链接
推荐阅读
- amazon-dynamodb - DynamoDB 的字符串长度数据
- python-3.x - 根据 Python 中的给定方程模拟股票价格
- php - 使用父母和孩子对行进行排序
- sql - 循环一个表,从其他表中选择数据并返回组合数据
- elasticsearch - 弹性索引的通配符别名
- jquery - 如何让 Jquery 数据表在页面滚动时加载更多数据
- spring - 应用 kubernetes 入口 tls 的问题
- azure - '延迟直到''排队新版本'的完成时间在 Azure 逻辑应用程序中不起作用
- nosql - 将数据从 NoSQL 迁移到 RDBMS
- kubernetes - Minikube“启动”命令没有创建虚拟机或集群(参见屏幕截图)