Я пытаюсь использовать VBA в Microsoft Word для автоматизации высокоповторных операций с большими документами.
Ситуация такова: у меня есть технический текст, содержащий много специальных символов, например, ❨ (U + 2768) и ❩ (U + 2769).Текст в основном набирается в Камбрии, но некоторые специальные символы не встречаются в этом шрифте.Однако я точно знаю, что все символы, используемые в документе, присутствуют в DejaVu Sans Mono.Следовательно, я хотел бы, чтобы все символы были в Камбрии, кроме тех, которые не могут быть отображены этим шрифтом - те символы, которые я хочу отображать в 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 знает, какие символы находятся в Камбрии, а какие нет.Я хочу, чтобы все экземпляры этих символов, которых нет в Камбрии, были снабжены шрифтом DejaVu Sans Mono.