-3
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
4

1 回答 1

3

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

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

当您使用后期绑定时,可能未启用引用,因此您不能依赖特定于库的常量枚举,例如wdReplaceAll. 相反,您必须使用它们对应的值,例如2.

更改这一行:

.Execute Replace:=2   'wdReplaceAll

使用后期绑定,不参考库,不使用Option ExplicitwdreplaceAll只是一个未声明的变量,其计算结果为0. 此值等效于wdReplaceNone启用参考。

更新

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

于 2013-09-26T17:31:54.107 回答