他のワークブックのデータの読み込みと設定
他のワークブックに、読み込みたいデータが入っていることもあります。読み込みたいデータが入っているワークブックの方は、VBAが設定されてなければ、拡張子は「xlsx」で構いません。VBAが設定されていれば「xlsm」となります。マクロの実行前に、利用するワークブックはすべて[Officeメニュー]-[開く]でメモリーに読み込んでおいてください(*)。マクロの入っているワークブックを表示させて、マクロを実行します。
*)マクロの書きこまれているワークブックからVBAでデータの入っているワークブックを自動的に読み込む「Workbooks.Open」という命令もあります。この方法は今後順を追って説明していきたいと思います。
[リスト11]acc01_book(セル操作編例題.xlsm と 他のBook.xlsx)
Sub acc01_book()
Windows("他のBook.xlsx").Activate '(1)
Sheets("Sheet1").Select
a = Cells(2, 2) '(2)
Windows("セル操作編例題.xlsm").Activate '(3)
Sheets("Sheet1").Select
Cells(10, 2) = a '(4)
Windows("他のBook.xlsx").Activate '(5)
Sheets("Sheet1").Select
Cells(20, 2) = a * 10 '(6)
End Sub
(1)ワークブックを参照するために、「Windowsプロパティ」というものがあります。「Windows("参照したいワークブック名").Activate」で今から作業するワークブックを指定します。「.Activate」は指定したワークブックを選択するという意味になります。他に「.Close」(ワークシートを閉じる)の指定などもあります。
(2)で2行B列のデータを変数aに読み込みます。
(3)から(4)でこのデータをマクロの設定のあるワークブックの10行B列に設定します。
(5)(6)はデータを読み込んだワークブックの20行B列に変数を10倍して設定しています。
(1)の書き方で各ワークブックを指定します。シートやセルの指定方法については、外部ワークブックを使った場合にも、これまでと変わるところはありません。
シートの指定とセルの指定はまとめて指定することもできます。
[リスト12]acc02_book(セル操作編例題.xlsm と 他のBook.xlsx)
Sub acc02_book()
Windows("他のBook.xlsx").Activate
a = Sheets("Sheet1").Cells(2, 2) '(1)
Windows("セル操作編例題.xlsm").Activate
Sheets("Sheet1").Cells(10, 2) = a
Windows("他のBook.xlsx").Activate
Sheets("Sheet1").Cells(20, 2) = a * 10
End Sub
(1)のように書きます。ここではSelectメソッドがないので、指定したシートが現在表示されているシートでないときは、画面にも表示されず、データの読み込みだけが行われます。
セルの操作
次に、セルに値を設定したり、逆にセルの値を変数に読み込んだりする方法を見ていきます。
[リスト13]cell_set(セル操作編例題.xlsm)
Sub cell_set()
Sheets("Sheet1").Select
a = Cells(1, 1) '(1)
b = Cells(2, 1) '(2)
Cells(3, 1) = "上記の加算の答えは" '(3)
Cells(4, 1) = a + b '(4)
End Sub
読み込みや設定は、「=」演算子をはさんで行います。右に書かれた式の答えを、左に指定した変数やCellsプロパティなどに設定します。(1)(2)は読み込みで、a、bの変数に値を読み込んでいます。(3)は3行A列に文字列を設定しています。(4)は読み込んだ変数a、bの内容を加算して、4行A列に設定しています。
図9-1 マクロ実行前に設定 |
図9-2マクロ実行結果 |