word文档中的vbscript多重查找/替换字符串
我正在尝试创建一个VB脚本,该脚本将执行word文档中某些字符的替换,我通过以下方式进行管理:word文档中的vbscript多重查找/替换字符串,vbscript,Vbscript,我正在尝试创建一个VB脚本,该脚本将执行word文档中某些字符的替换,我通过以下方式进行管理: objSelection.Find.Text = "[" objSelection.Find.Forward = TRUE objSelection.Find.Replacement.Text = "q" objSelection.Find.Execute ,,,,,,,,,,2 objSelection.Find.Text = "{" objSelection.Find.Forward = TRUE
objSelection.Find.Text = "["
objSelection.Find.Forward = TRUE
objSelection.Find.Replacement.Text = "q"
objSelection.Find.Execute ,,,,,,,,,,2
objSelection.Find.Text = "{"
objSelection.Find.Forward = TRUE
objSelection.Find.Replacement.Text = "w"
objSelection.Find.Execute ,,,,,,,,,,2
objSelection.Find.Text = "^"
objSelection.Find.Forward = TRUE
objSelection.Find.Replacement.Text = "y"
objSelection.Find.Execute ,,,,,,,,,,2
objSelection.Find.Text = "~"
objSelection.Find.Forward = TRUE
objSelection.Find.Replacement.Text = "z"
objSelection.Find.Execute ,,,,,,,,,,2
objSelection.Find.Text = "]"
objSelection.Find.Forward = TRUE
objSelection.Find.Replacement.Text = "x"
objSelection.Find.Execute ,,,,,,,,,,2
objSelection.Find.Text = "}"
objSelection.Find.Forward = TRUE
objSelection.Find.Replacement.Text = "ć"
objSelection.Find.Execute ,,,,,,,,,,2
objSelection.Find.Text = "@"
objSelection.Find.Forward = TRUE
objSelection.Find.Replacement.Text = "]"
objSelection.Find.Execute ,,,,,,,,,,2
然而,我设法做到这一点的方式非常缓慢,特别是当文本文件有几MB时,增加需要替换的字符数时。。。因此,对于每个替换字符,脚本都会遍历整个文档,结果是脚本的执行非常缓慢。是否有可能并行更改word文档中的多个字符,脚本仅通过文档一次,并根据遇到的字符来执行替换?
我还尝试将word文档中的一行一行地加载到一个变量中,并将每个字符与给定字符进行比较,以进行替换,这导致脚本的执行速度大大降低。。。
对不起我的英语,我希望我能成功地解释我的问题。
请帮帮我。谢谢。:) 你能这样做吗
objSelection.Find.ClearFormatting
With objSelection.Find
.Text = "[\[\{~\]\}\@^0094]" ' ^0094 is "^"
.Replacement.Text = ""
.Forward = True
.Wrap = 1 'wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchAllWordForms = False
.MatchSoundsLike = False
.MatchWildcards = True
End With
Do While objSelection.Find.Execute()
Dim t: t = objSelection.Text
Select Case t
Case "["
objSelection.Text = "q"
Case "{"
objSelection.Text = "w"
Case "~"
objSelection.Text = "z"
'... fill in the rest
End Select
objSelection.Move 1
Loop
我认为这可能只适用于查找和替换单个字符,但它所做的是匹配您要查找的任何字符,检查找到的字符并将其替换为适当的字符
这是从Word 2010中录制的宏中获取的,但我认为没有必要将其转换为VBScript