【发布时间】:2010-02-26 06:59:54
【问题描述】:
我有一个 Word 2007 文件,我想将 Courier New 字体的所有用法更改为 Lucida 控制台字体。我需要一个脚本来查找以该字体格式化的所有单词并将其更改为新字体。
我该怎么做?
【问题讨论】:
-
只是想跟进看看以下是否回答了您的问题。
我有一个 Word 2007 文件,我想将 Courier New 字体的所有用法更改为 Lucida 控制台字体。我需要一个脚本来查找以该字体格式化的所有单词并将其更改为新字体。
我该怎么做?
【问题讨论】:
在 Word 中,您可以自己录制宏。然后你打开 VBA 编辑器,有选择地删除一些无用的东西(通常是文件中的选择或移动太多),你就得到了你的脚本。
已编辑:将评论内容移至此处,以回答作者的评论。
录制宏时,在查找和替换对话框中,单击“全部替换”。然后停止录制。生成的宏如下所示:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "tarte au pomme"
.Replacement.Text = "t aux pruneaux"
.Wrap = wdFindContinue
.MatchCase = False
' removed some stuff
End With
Selection.Find.Execute Replace:=wdReplaceAll
由此,您可以创建 VBScript 宏。您需要在对象浏览器中获取 wdReplaceAll 和 wdFindContinue 的值。
【讨论】:
.Text = "" 和.Replacement.Text = ""。那么这将优于所有其他替代方案!
也许你可以使用OpenXML SDK 2.0?您应该能够更改样式(我相信这是包含字体信息的内容)。
【讨论】:
这将为您解决:
Sub ChangeFonts()
Dim doc As Document
Set doc = ActiveDocument
For i = 1 To doc.Range.Characters.Count
If doc.Range.Characters(i).Font.Name = "Courier New" Then
doc.Range.Characters(i).Font.Name = "Lucida Console"
End If
Next
End Sub
【讨论】:
Selection.Find 快,并且在Story 中工作而不是主体(页眉、页脚等)。