word文档中的vbscript多重查找/替换字符串

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

我正在尝试创建一个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.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