エクセルVBAでブックを開いたときに他のワークブックも一緒に自動で開く


open

photo credit: CJS*64 “Man with a camera” Just love small gardens ! via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

お仕事でいつも決まった複数のエクセルファイルを使っていませんか?

朝来たら、全部のファイルをダブルクリック…頻繁にあると思うとちょっと面倒ですよね。

特定のファイルを開いたら、一緒に使用する他のファイルも一気に開いたりするととっても便利です。

今回は、エクセルVBAでブックを開いたら一緒に他のワークブックも自動で開くプログラムを紹介します。

Auto_Openというイベントプロシージャを使いますよ。

では、行ってみましょう。

スポンサーリンク

Workbooks.Openでワークブックを開く

エクセルVBAでワークブックを開く場合は、Workbooks.Openを使います。

書き方は

Workbooks.Open 開くファイルのフルパス

ですね。

「Workbook」ではなくて「Workbooks」ですよ。「s」が入るので注意して下さいね。Workbooksコレクションに開いたワークブックを追加する、みたいなイメージです。

開くファイルの指定は「フルパス」で指定する必要があります。Windowsであれば、だいたいCドライブから始まるこんなやつです。

C:\Users\Noriaki\Dropbox\40_ブログ\vba-file-dir\開くファイル\エクセル-1.xlsx

複数のワークブックを開くプログラム

ですから、例えば

Sub OpenFiles()

Workbooks.Open "C:\Users\Noriaki\Dropbox\40_ブログ\vba-file-dir\開くファイル\エクセル-1.xlsx"
Workbooks.Open "C:\Users\Noriaki\Dropbox\40_ブログ\vba-file-dir\開くファイル\エクセル-2.xlsx"

End Sub

というプログラムを走らせると二つとも開いてくれます。

エクセルVBAで複数のワークブックを開く

Auto_Openでファイルを開いたときに実行する

…ですが、これでは「特定のファイルを開いたら一緒に他のファイルも自動で開く」ではありませんね。

現在マクロを仕込んでいるワークブックを開いたら自動で開くようにしたいのです。

そのような場合は、プロシージャ名を

Sub Auto_Open()

と変更をすればOKです。たったそれだけです。

ブックを起動時に他のブックも起動するプログラム

わざわざ書くまでもないですが

Sub Auto_Open()

Workbooks.Open "C:\Users\Noriaki\Dropbox\40_ブログ\vba-file-dir\開くファイル\エクセル-1.xlsx"
Workbooks.Open "C:\Users\Noriaki\Dropbox\40_ブログ\vba-file-dir\開くファイル\エクセル-2.xlsx"

End Sub

として保存。閉じてから再度開くと

エクセルVBAでブックを開くと同時に他のブックも開く

マクロを記述した「ファイルを開く.xlsm」とともに、マクロ内で指定した二つのファイルも開きます。

イベントプロシージャAuto_Open

このからくりですが、イベントプロシージャというものです。

VBAにはイベントプロシージャというものがありまして、ワークブックやワークシートなどのオブジェクトに対して何らかのイベントが発生したときに、自動で走らせるプロシージャを仕込むことができるのです。

今回のAuto_Openは標準モジュールに仕込むことができ、手動でマクロを記述したファイルを開いた際に実行されるものです。

けっこう便利なので覚えておきましょう。

Auto_OpenとWorkbook_Openとの違い

Auto_Openと同じく、ワークブックが開いたときに実行されるイベントプロシージャとしてWorkbook_Openというものがあります。

これらの違いは何でしょうか…?

一つ目は記述先です。Auto_Openは標準もジュールに記載をしますが、Workbook_Openはブックモジュール「ThisWorkbook」に記述します。

二つ目は起動条件です。VBAでブックを開いたときに違いが出ます。つまり、これですね。

Workbooks.Open "C:\Users\Noriaki\Dropbox\40_ブログ\vba-file-dir\ファイルを開く.xlsx"

これで開いたとき、Workbook_Openは実行されますが、Auto_Openは実行されません。

まとめ

以上、エクセルVBAでファイルを開いたときに他のファイルも一緒に自動で開く方法についてお伝えしました。

ちょっとしたツールですが、毎日の作業を考えるとけっこう便利なのではないかと思います。

さて、以降このツールをどんどんパワーアップさせていきます。

まず、現在はWorkbooks.Openを使っていますから、ちゃんと開ける対象はエクセルファイルだけです。ワードとか、テキストファイルとかも開きたいじゃないですか。

次回、エクセル以外の他のアプリケーションのファイルを開く方法をお伝えします。

エクセルVBAでエクセル以外の他のアプリケーションを開く方法
エクセルVBAでファイルを開く作業を自動化する方法をお伝えしています。今回はエクセルVBAでエクセル以外の他のアプリケーションのファイルを開く方法としてShellオブジェクトの使い方をお伝えします。

どうぞお楽しみに!

連載目次:エクセルVBAでファイルやフォルダを操作する方法

お仕事でいつも決まったファイルをいつも一つずつダブルクリックして開くの…毎日だと思うと面倒ですよね。 このシリーズでは、ファイルを自動で開く、フォルダ一覧を出力するなど、エクセルVBAでファイルやフォルダを操作する方法についてお伝えしていきます。
  1. エクセルVBAでブックを開いたときに他のワークブックも一緒に自動で開く
  2. エクセルVBAでエクセル以外の他のアプリケーションを開く方法
  3. エクセルVBAでDir関数を使って指定のファイルが存在するかどうかを判定する方法
  4. エクセルVBAでFileDialogオブジェクトを使ってファイル選択ダイアログを開く
  5. エクセルVBAでフォルダ内のファイル一覧を表示するDir関数の使い方
  6. エクセルVBAでDir関数を使ってフォルダ一覧を表示する方法

タイトルとURLをコピーしました