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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用VBA循环访问MS Word中的每个字母?相关的知识,希望对你有一定的参考价值。

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

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

答案

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

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
另一答案

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

另一答案

方式更快:

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
另一答案

使用mswords格式查找和替换。您将节省时间和大文件不会成为一个问题。

以上是关于如何使用VBA循环访问MS Word中的每个字母?的主要内容,如果未能解决你的问题,请参考以下文章

MS Word,VBA,如何选择表格内单元格中的段落?

MS Word 中的 VBA 影响整个文档,而不仅仅是选择

将特定页码分配给 vba 中的 ms 访问报告

VBA如何使用循环直到word文本的结尾?

MS Access VBA 嵌套循环错误处理。我需要在每个嵌套循环中进行不同的错误处理。它是如何工作的?

使用 MS Access 和 VBA 更新 Ms Word 文档中的(字段代码:数据库)字段