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
2776 次
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 に答える