如何使用VBA循环访问MS Word中的每个字母?

时间:2010-03-07 15:44:29

标签: ms-word word-vba

我有大约100个Word文档,其中包括外语名称的音译。这些文档的作者使用了一种名为 e2 的特殊字体,它有大约十二个特殊的音译字符(所有这些字符都以Microsoft Sans Serif字体提供)。

我想遍历文档的每个字母,每当.Font = "e2"我想循环打十几个字母时(很容易猜到它们是什么),并用Microsoft Sans Serif等效字母替换它们。但我无法弄清楚你如何循环通过字母。这是否可以像在Excel电子表格中循环遍历单元格一样?

4 个答案:

答案 0 :(得分:4)

这是一种方法,但根据文档的大小,可能需要很长时间才能执行。

Sub ChangeFonts()
Dim doc As Document
Set doc = ActiveDocument

For i = 1 To doc.Range.Characters.Count
    If doc.Range.Characters(i).Font.Name = "e2" Then
        doc.Range.Characters(i).Font.Name = "Microsoft Sans Serif"
    End If
Next

End Sub

答案 1 :(得分:0)

您也可以将其保存为docx,在zip文件中打开它,并在document.xml和fontTable.xml中进行搜索/替换。

答案 2 :(得分:0)

方法更快:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Font.Name = "e2"
    .Replacement.Font.Name = "Microsoft Sans Serif"
    .Forward = True
    .Format = True
    .Wrap = wdFindContinue
    .Execute Replace:=wdReplaceAll
  End With
End With
Application.ScreenUpdating = True
End Sub

答案 3 :(得分:-1)

使用mswords格式查找&更换。你会节省时间和时间大文件不会成为问题。