Microsoft Word:更改默认字体中缺少的字符字体

时间:2010-08-15 16:35:12

标签: vba fonts ms-word replace special-characters

我正在尝试在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(坎布里亚))∩C(Doc)中的每个角色编写上述代码并不是非常有趣,其中C(DejaVu),C(Cambria)和C (Doc)分别是DejaVu Sans Mono,Cambria和我的文档中所有角色的集合。

是否有任何(相当简单的)方法可以自动完成此操作?当然,Microsoft Word知道在Cambria中找到哪些字符,哪些不是。我想要在Cambria中找不到的那些角色的所有实例都被赋予DejaVu Sans Mono字体。

1 个答案:

答案 0 :(得分:1)

我认为这个答案可以帮助您实现目标:Script for changing fonts in a Word document