需要在excel vba中写入打开单词然后进行搜索并替换单词。搜索时,我的代码不起作用。用词代替

时间:2013-09-26 17:10:59

标签: excel vba ms-word

Sub OpenWordFile()

Dim objWord As Object
Set objWord = CreateObject("Word.Application")
objWord.Visible = True
'Change the directory path and file name to the location of the document you want to open from Excel
objWord.Documents.Open "C:\Documents and Settings\CISGuest\My Documents\payroll_test1.txt"

'Search and Replace for "Prepared up to Number"
With objWord
    .Activate
        With objWord.Selection.Find
            .Text = "Prepared & Number"
            .Replacement.Text = ""
            .Forward = True
            .Wrap = wdFindAsk
            .Format = False
            .MatchCase = False
            .MatchWholeWord = False
            .MatchSoundsLike = False
            .MatchWildcards = True
            .Execute Replace:=wdReplaceAll
        End With
End With

End Sub

1 个答案:

答案 0 :(得分:3)

使用后期绑定时,应使用Option Explicit来避免此类错误。实际上, 总是应该使用Option Explicit。它将识别未声明的变量并帮助您编写更好的代码。

wdReplaceAll是一个依赖于MS Word库引用的枚举常量。

使用后期绑定时,可能未启用引用,因此您无法依赖wdReplaceAll 2之类的library-specific constant enumerations。相反,您必须使用相应的值,例如.Execute Replace:=2 'wdReplaceAll

改变这一行:

Option Explicit

使用后期绑定,不参考库,并且不使用wdreplaceAll0只是一个未声明的变量,其值为wdReplaceNone。该值相当于启用了引用的wdFindAsk

<强>更新

注意:2也是一个枚举常量,除非您启用了库引用,否则没有任何意义。这也应该更改为代码中的{{1}}。