2016-04-22 81 views
0

我怎么能说一个字从VB脚本VBA宏代码:运行从VB脚本一句话VBA宏

字VBA宏代码是根据:

Sub find_replace_vik_42216() 


Application.ScreenUpdating = False 

Selection.Find.ClearFormatting 
Selection.Find.Replacement.ClearFormatting 
With Selection.Find 
    .Text = "abc" 
    .Replacement.Text = "def" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
With Selection 
    If .Find.Forward = True Then 
     .Collapse Direction:=wdCollapseStart 
    Else 
     .Collapse Direction:=wdCollapseEnd 
    End If 
    .Find.Execute Replace:=wdReplaceOne 
End With 



Selection.Find.ClearFormatting 
Selection.Find.Replacement.ClearFormatting 
With Selection.Find 
    .Text = "pqr" 
    .Replacement.Text = "xyz" 
    .Forward = True 
    .Wrap = wdFindContinue 
    .Format = False 
    .MatchCase = False 
    .MatchWholeWord = False 
    .MatchWildcards = False 
    .MatchSoundsLike = False 
    .MatchAllWordForms = False 
End With 
With Selection 
    If .Find.Forward = True Then 
     .Collapse Direction:=wdCollapseStart 
    Else 
     .Collapse Direction:=wdCollapseEnd 
    End If 
    .Find.Execute Replace:=wdReplaceOne 
End With 

Application.ScreenUpdating = True 

End Sub 

可能亲爱的会员创造一个VB其中包含上述代码的脚本文件,以便我调用vb脚本,以便运行代码。

我破坏了我的大脑和困扰谷歌,无济于事。请帮忙。

谢谢。

维克

回答

1

有它打开文档并提出两个替代与给定的选项中,.Find.Execute method更紧凑的形式使用VBScript代码示例:

Const wdFindContinue = 1 
Const wdReplaceOne = 1 

Dim objWord, objDocument 

Set objWord = CreateObject("Word.Application") 
objWord.Visible = True 
Set objDocument = objWord.Documents.Open("C:\test.docx") 
With objWord 
    .ScreenUpdating = False 
    With .Selection 
     .Collapse 
     With .Find 
      ' .Execute(FindText, MatchCase, MatchWholeWord, MatchWildcards, MatchSoundsLike, MatchAllWordForms, Forward, Wrap, Format, ReplaceWith, Replace, MatchKashida, MatchDiacritics, MatchAlefHamza, MatchControl) 
      ' "abc" -> "def" 
      .Execute "abc", False, False, False, False, False, True, wdFindContinue, False, "def", wdReplaceOne 
      ' "pqr" -> "xyz" 
      .Execute "pqr", False, False, False, False, False, True, wdFindContinue, False, "xyz", wdReplaceOne 
     End With 
    End With 
    .ScreenUpdating = True 
End With 
+0

它工作得很好,但还是打开了字。我的要求是不打开word文档。 – vicki

+0

@vicki,最好你编辑你的问题并添加你的需求。目前还没有为允许修改Word文档的脚本环境创建的此类工具。唯一的方法是使用'Word.Application' ActiveX。您不想运行Word的原因是什么?可能只是无形中打开Word,修改后保存并关闭文档? – omegastripes