我正在尝试在 Microsoft Word 中使用 VBA 自动执行大型文档的高度重复操作。
情况是这样的:我有一篇技术文本,其中包含很多特殊字符,例如❨ (U+2768) 和 ❩ (U+2769)。文字主要用Cambria排版,但有些特殊字符在该字体中找不到。然而,我确实知道一个事实,文档中使用的所有字符都存在于 DejaVu Sans Mono 中。因此,我希望所有字符都在 Cambria 中,除了那些无法以此字体显示的字符 - 我希望在 DejaVu Sans Mono 中显示的那些字符。
在 Microsoft Word 2007 中,我可以通过 Ctrl+A 轻松实现此目的,将字体设置为 DejaVu Sans Mono,将字体设置为 Cambria。第二次更改字体只会更改 Cambria 中可以显示的字符的字体。
但是,在 Microsoft Word 2010 中,这显然不起作用。每个字符都使用 Cambria 字体,并且不会显示 Cambria 中未找到的字符,而是显示带框的问号符号。
为了克服这个问题,我转向了 VBA。更改给定字符的字体非常容易,例如
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
Selection.Find.Text = ChrW(10088)
Selection.Find.Replacement.Text = ChrW(10088)
Selection.Find.Replacement.Font.Name = "DejaVu Sans Mono"
Selection.Find.Execute Replace:=wdReplaceAll
但是,为 (C(DejaVu) ∖ C(Cambria)) ∩ C(Doc) 中的每个字符编写上述代码并不是很有趣,其中 C(DejaVu)、C(Cambria) 和 C (Doc) 分别是 DejaVu Sans Mono、Cambria 和我的文档中所有字符的集合。
是否有任何(相当简单的)方法可以自动完成此操作?当然,Microsoft Word 知道哪些字符可以在 Cambria 中找到,哪些不能。我希望 Cambria 中未找到的这些字符的所有实例都被指定为 DejaVu Sans Mono 字体。
最佳答案
我认为这个答案将帮助您实现目标:Script for changing fonts in a Word document
关于vba - 微软Word : Change Font of Characters Missing In Default Font,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3488242/