データの分析、グラフ作成、および通信のためのツールを備えた Microsoft 表計算ソフトウェアのファミリ。
>With .Worksheets("シート名")にしないと動かなかったのですが
失礼。タイプミスです。 WorkSheetsが正しいです。
修飾するというのはオブジェクトがどこに所属するかを明確にするという意味です。
オブジェクトと言っても難しく考える必要はありません。
ブック、ワークシート、レンジのように実体のあるものはすべてオブジェクトです。
例えば単に
Range("A1")と書いただけではどこに所属するものかExcelには分かりません。
(A1は各ブックの各シートにありますから)
それで、単にRange("A1")となっていた場合、Excelは仕方がないのでActiveSheetのRange("A1")と解釈するルールになっています。
ですからたまたま正しいシートがActiveになっていれば正常に動きます。
命令の中には自動的に違うところをActiveにするものがあります。
今使われている例ではOpenです。Openをやると、いままでThisWorkbookのどこかのシートがActiveだったのが、新たに開いたブックの、保存された時にActiveだったシートに切り替わります。
今回はたまたまそこにデータを格納するつもりだったので正常に動いているわけです。
こういう紛れを避けるため、オブジェクトを修飾して正体を明確にするわけです。
wBK.WorkSheets("Sheet1").Range("A1")
は、wBkつまり新たに開いたブックの、Sheet1のA1と言うことになり、仮にブックがSheet2をActiveSheetとして開かれてもちゃんと動きます。
ただ、すべてのオブジェクトにいちいちこのような記述をするのは大変ですので、
With句で「この範囲のオブジェクトはすべてこれです」と教えてやったり、オブジェクト変数(ここではwMYSheet)
などを使って、書き易くかつ読み易くします。
前にも申し上げましたが、複数のワークシートや複数のワークブックを取り扱う場合これをあいまいにするとトラブルの元になります。