2016-04-22 80 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