2012-11-14 41 views
1

在替换字符串我试图创建一个VB脚本,将Word文档中的某些字符替换,我在下面的方式进行管理:的VBScript多查找/ 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文档逐行加载到一个变量和比较每个字符与给定的字符替换,导致脚本执行速度慢得多...对不起,我希望我成功地解释我的问题。 请帮帮我。谢谢。 :)

回答

0

你能做这样的事情吗?

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。

+0

非常感谢您的回复,但这是比较慢的方式... – nexry