我想将所有文本的字体设置为Times New Roman,并编写了以下代码:
Selection.WholeStory
With Selection.Font
.NameAscii = "Times New Roman"
.NameOther = "Times New Roman"
.Name = ""
End With
但是,当我运行这些代码时,所有方程式(即Omath对象)的字体也将变为Times New Roman,而不是Cambria Math。
之后,我尝试添加以下代码:
For Each Oma In NewDoc.OMaths
With Oma.Range.Font
.Italic = True
.Name = "Cambria Math"
End With
DoEvents
Next
这不工作,但它的速度太慢,因为有一个for循环中的代码。
但是,当我只按Ctrl + A选择整个故事并手动设置字体时,Word会自动跳过等式,而在VBA中则不会。
因此,我想知道是否有一种很好的方法来设置文本的字体但保留方程式的字体?非常感谢!
更新:
我尝试按照@Timothy Rylatt的建议查找并替换。这是我的代码:
Sub FindReplaceFont()
With ActiveDocument.Content.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = ""
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.Format = True
.Font.Name = "Consolas"
.Replacement.Font.Name = "Times New Roman"
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
End Sub
但是我遇到了一个奇怪的问题:找到并替换后,两个内联方程之间的文本将合并到一个方程对象中。这是照片:
我以前遇到过这个问题,但我仍然不知道为什么会发生这种情况以及如何处理。有什么建议吗?
再次谢谢你们。
更新:
我已经按照@macropod的建议解决了这个问题。我应该设置样式的字体,而不是直接设置它们。样式上的一个简单的for循环就可以了!
答案很简单:
ActiveDocument.Styles(wdStyleNormal).Font.Name = "Times New Roman"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句