|
「Workbook オブジェクト」についてヘルプを参照すると”開かれているすべてのブックを表す Workbooks コレクション”とかかれています。例として,moji = Workbooks("sample1.xls").Sheets("Sheet1").Range("A1").value のような使い方をすると思います。
たとえば,"sample1.xls" が ThisWorkbook.Path と異なるディレクトリに保存されている場合でも,ファイルが開いている状態であれば,マクロ実行の際には問題ないと思います。
そこで質問なのですが,"sample1.xls" が閉じている状態では,moji = Workbooks("sample1.xls").Sheets("Sheet1").Range("A1").value はどのような書き方に代わるのでしょうか?
具体的には次のように記述したものを書き換えたいと思っています。(ブックが開いている状態では問題なし)
Set wk1 = Worksheets("summary")
wk1.Cells(2, 4).Value = Application.WorksheetFunction.Index( _
Workbooks("sample1.xls").Sheets("Sheet1").Range("P:P"), _
Application.WorksheetFunction.Match(Range("$A2"), _
Workbooks("sample1.xls").Sheets("Sheet1").Range("A:A"), 0), 1)
ブックは "sample1.xls" , "sample2.xls" というように複数あり(全てディレクトリが異なります),シート数も複数あり,If や Select Case 等で使い分けしたいため,Set ステートメントや変数等で表したいと思っています。
なお,
wk1.Cells(2, 5).Value = Application.WorksheetFunction.Index( _
Workbooks("sample1.xls").Sheets("Sheet1").Range("Q:Q"), _
Application.WorksheetFunction.Match(Range("$A2"), _
Workbooks("sample1.xls").Sheets("Sheet1").Range("A:A"), 0), 1)
というようにループさせたいと思っています。
やはり,Workbooks.Open 等でブックを一度開かせて,処理させ,Close させ,別のブックを開くのような手順をさせる方法がいいのでしょうか?
【44727】の質問の際,やたらといろんなブックは開かない方がいいですよと,アドバイスを頂いたため,なんとかコードが記述されているブック以外開かないコードを作ろうと挑んだのですが,行き詰まり質問させて頂きました。
宜しくお願いします。
|
|