vba - 如何在 MS word 中使用 VBA 选择文档中的所有数学方程?
问题描述
我对 MS word 中的 VBA 编辑器很陌生,我想知道是否有一种方法可以使用 VBA 选择 word 文档中的所有数学方程?例如下面的代码
Sub Change_Equation_Color()
Dim Eq As OMath
For Each Eq In ActiveDocument.OMaths
Eq.Range.Select
Selection.Font.ColorIndex = wdDarkBlue '
Next
End Sub
依次选择每个数学方程并将每个方程的颜色更改为“wdDarkBlue”。即使这很好,有没有办法先选择所有方程,然后更改选择的颜色/字体/等?主要原因是如果我的文档有很多方程,那么提供的代码会有点慢,因为它必须按顺序遍历每个方程。
编辑。@Timothy Rylatt 提供了一种非常快速且通用的方法,但出于我的目的,我发现以下代码实际上要快得多。
Sub Eq2LM()
With ActiveDocument.Content.Find
.ClearFormatting
.Format = False
.Font.Name = "Cambria Math"
.Text = ""
With .Replacement
.ClearFormatting
.Font.Name = "Latin Modern Math"
.Text = ""
End With
.Execute Forward:=True, Replace:=wdReplaceAll
End With
End Sub
“警告”是您的方程式必须全部采用“Cambria math”字体,这通常是默认字体。
解决方案
无法使用 VBA 创建非连续选择。
使用该Selection
对象不是一个好习惯,尽管在极少数情况下它是必要的。通常有更好的替代方案,它们更有效且不易出错。例如:
Sub Change_Equation_Color()
Dim Eq As OMath
Application.ScreenUpdating = False
For Each Eq In ActiveDocument.OMaths
Eq.Range.Font.ColorIndex = wdDarkBlue
Next
Application.ScreenUpdating = True
End Sub
推荐阅读
- javascript - 将函数调用中的属性分配给现有对象的最短语法?
- javascript - 修改解构的反应状态将更新组件的状态
- c - 当 NULL 不是全零位时,全零位指针值是否也是“假”?
- xamarin - Visual Studio 卡在“为解决方案还原包”上
- python - Python Turtle Pong 游戏球和桨碰撞
- c# - 如果我不在 C# 中以调试模式运行测试,则进程未完全完成
- firebase - 如何根据 uid 创建用户配置文件并导航到配置文件页面?
- android-studio - 如何在真机上下载
- google-cloud-platform - 如何为存储桶中的文件更改创建电子邮件通知
- ios - 通用链接在 iOS 模拟器中不起作用