-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ます。宣言されていない変数を特定し、より良いコードを書くのに役立ちます。

wdReplaceAllMS Word ライブラリ参照に依存する列挙定数です。

遅延バインディングを使用する場合、参照が有効になっていない可能性があるため、 のようなライブラリ固有の定数列挙に依存することはできませwdReplaceAll。代わりに、 などの対応する値を使用する必要があります2

次の 1 行を変更します。

.Execute Replace:=2   'wdReplaceAll

ライブラリを参照せず、 を使用せずに遅延バインディングを使用するOption Explicitと、wdreplaceAllは に評価される宣言されていない変数にすぎません0。この値はwdReplaceNone、参照を有効にした場合と同等です。

アップデート

注:wdFindAskライブラリ参照を有効にしない限り、何も意味しない列挙定数でもあります。これもコードで変更する必要があり2ます。

于 2013-09-26T17:31:54.107 に答える