【发布时间】:2014-11-22 03:52:54
【问题描述】:
我正在编写一个 Word 宏,它从 Excel 文件中读取大约 1000 个单词对,并相应地替换 Word 文件。一开始我使用下面的代码进行替换:
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = SrcText
.Replacement.Text = DestText
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = False
.MatchFuzzy = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
它可以工作,但对于大型 Word 文件来说似乎有点慢。然后我尝试首先将整个内容读入一个字符串变量,在那里进行查找,然后在找到任何替换目标时更改 Word 文件(尽管我实际上不确定这是否会更快)。
在这样做时,我遇到了有点奇怪的不一致。例如,如果您创建的 Word 文件的第一行中只有一个单元格表格:
然后在 VBA 编辑器中,下面的代码将为您提供 2.
Debug.Print Len(ActiveDocument.Characters(2))
我不知道是否存在其他这种不一致并卡在那里。
是否有任何解决方法或是否有任何其他方法可以加快更换速度?
【问题讨论】:
-
单元格结尾和表格字符结尾。您甚至可以在图片中看到它们。
-
@Noodles 感谢您指出这一点。我很好奇为什么“Characters”和“Len”以不同的方式计算单元格的结尾和表格字符的结尾。你有什么线索吗?此外,这是唯一以不同方式计算的角色吗?