【问题标题】:Script for changing fonts in a Word document用于更改 Word 文档中的字体的脚本
【发布时间】:2010-02-26 06:59:54
【问题描述】:

我有一个 Word 2007 文件,我想将 Courier New 字体的所有用法更改为 Lucida 控制台字体。我需要一个脚本来查找以该字体格式化的所有单词并将其更改为新字体。

我该怎么做?

【问题讨论】:

  • 只是想跟进看看以下是否回答了您的问题。

标签: c# vbscript ms-word


【解决方案1】:

在 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 = ""。那么这将优于所有其他替代方案!
【解决方案2】:

也许你可以使用OpenXML SDK 2.0?您应该能够更改样式(我相信这是包含字体信息的内容)。

【讨论】:

    【解决方案3】:

    这将为您解决:

    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 中工作而不是主体(页眉、页脚等)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-19
    • 1970-01-01
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 1970-01-01
    相关资源
    最近更新 更多