集計データのようなブックが大量にある場合に、それらに含まれている特定のシートだけを取り出した後、重要なデータだけをまとめて1枚のシートで一覧する─。そんな一連の作業が簡単にできるマクロを前回までに作成しました。今回は、読み込むフォルダーを指定しやすくし、さらにExcel 2007/2010形式のファイルも読み込めるようにしました。

 前回までのマクロでは、読み込むファイルを指定するときに拡張子が「xls」のものしか表示しない仕様になっていました。このため、拡張子が「xlsx」のファイルだけしか入っていないフォルダーは読み込むことができません。今回は、含まれているファイルとは関係なく、フォルダーを指定できるように変更しました。

 図1の画面で「シートの取り込み」ボタンを押すと、フォルダーを選択する画面が現れます(図2)。ここで目的のフォルダーを指定して「OK」ボタンを押します。

図1 「シートの取り込み」ボタンを押す
図1 「シートの取り込み」ボタンを押す

図2 フォルダーを開くためのダイアログが開くので、取り込みたいフォルダーを指定して「OK」ボタンを押す
図2 フォルダーを開くためのダイアログが開くので、取り込みたいフォルダーを指定して「OK」ボタンを押す

 すると前回までと同様に、「管理」シートのA列には、図2で指定したフォルダーに含まれているブック名や、そのブックに含まれているシート名などが現れます。と同時に、A1セルで指定したシートが取り込まれます(図3)。

図3 対象のフォルダーに入っているファイルからA1セルで指定した名前のシートが取り込まれる
図3 対象のフォルダーに入っているファイルからA1セルで指定した名前のシートが取り込まれる
[画像のクリックで拡大表示]

値にすれば動作が速い

 取り込んだシートのデータを一覧するためのマクロも強化しました。前回はINDIRECT関数を使って、別シート上のデータをあたかも串刺し計算のように「一覧」シートに並べて表示する仕組みでした。今回もその仕組みは残しています。図4の「数式でデータ一覧」ボタンを押すと、「一覧」シートの必要な部分に数式が書き込まれます。

図4 「一覧」シートには、「数式でデータ一覧」「値でデータ一覧」の2つのボタンがある。いずれも「一覧」シートより右側にあるシートの名前と、3行目に指定したセルアドレスのデータを表示するが、押したボタンによって表示する仕組みが異なる
図4 「一覧」シートには、「数式でデータ一覧」「値でデータ一覧」の2つのボタンがある。いずれも「一覧」シートより右側にあるシートの名前と、3行目に指定したセルアドレスのデータを表示するが、押したボタンによって表示する仕組みが異なる
[画像のクリックで拡大表示]

 一方、「値でデータ一覧」ボタンを押すと、今回作成したマクロが動きます。取り込んだシートから、値だけを「一覧」シートにコピーします。

 数式でデータ一覧を作成した場合は、「一覧」シートの右側にあるシートの内容を後で変更した場合でも、その結果は「一覧」シートに反映されます。しかし、あまりにも大量のデータを取り扱う場合は計算式が多くなってシートの動きが遅くなってしまいます。

 その点、「値でデータ一覧」ボタンを押した場合は、非常に大量のデータであっても素早く動作します。目的によって使い分けてください。

 なお、図の例では、Excel 2007で作成した、拡張子が「xlsx」のブックをExcel 2003で読み込んでいます。初期状態のExcel 2003は拡張子が「xlsx」のブックを読むことができませんが、マイクロソフトのWeb サイトからダウンロードして入手できる「Word/Excel/PowerPoint用Microsoft Office互換機能パック」という追加ソフトをインストールすると、読み書きできるようになります。

サンプルファイルの公開は終了しました。