如何使用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中的每个字母?的主要内容,如果未能解决你的问题,请参考以下文章