vba - 微软Word : Change Font of Characters Missing In Default Font

标签 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(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/

相关文章:

c# - ASP.NET 图表助手的自定义标题字体

powershell - 使用 Powershell 为 Word 文档添加页眉和页脚

c# - 在 Windows Phone 中嵌入 OTF 字体

vba - Excel 加载项将文件名更改为加载项的名称,尽管它不应该

excel - 复制工作簿名称,然后使用 vba 激活具有复制名称的工作簿

vba - 如何复制一列的所有单元格并将其粘贴到一行中而不在VBA中重复

html - 让这些点击功能在没有 jQuery 的情况下工作

javascript - WordJS/OfficeJS如何获取段落的唯一id

windows - Microsoft Word 命令行实用程序

excel - 有人能告诉我我的 'MsgBox' 代码有什么问题吗?