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
ます。宣言されていない変数を特定し、より良いコードを書くのに役立ちます。
wdReplaceAll
MS Word ライブラリ参照に依存する列挙定数です。
遅延バインディングを使用する場合、参照が有効になっていない可能性があるため、 のようなライブラリ固有の定数列挙に依存することはできませんwdReplaceAll
。代わりに、 などの対応する値を使用する必要があります2
。
次の 1 行を変更します。
.Execute Replace:=2 'wdReplaceAll
ライブラリを参照せず、 を使用せずに遅延バインディングを使用するOption Explicit
と、wdreplaceAll
は に評価される宣言されていない変数にすぎません0
。この値はwdReplaceNone
、参照を有効にした場合と同等です。
アップデート
注:wdFindAsk
ライブラリ参照を有効にしない限り、何も意味しない列挙定数でもあります。これもコードで変更する必要があり2
ます。
于 2013-09-26T17:31:54.107 に答える