エクセルVBAでエクセル以外の他のアプリケーションを開く方法

★気に入ったらシェアをお願いします!


open-window

photo credit: CJS*64 “Man with a camera” Calle Del Arco ! via photopin (license)

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

エクセルVBAでファイルを開く作業を自動化する方法をお伝えしています。

前回ですが、エクセルファイルを開いたときに、自動で他の複数のブックを開く方法についてお伝えしました。

エクセルVBAでブックを開いたときに他のワークブックも一緒に自動で開く
エクセルで特定のファイルを開いたら、一緒に使用する他のファイルも自動で開くと便利です。今回はAuto_Openというイベントプロシージャを使ってブック起動時に他のブックも自動で開くVBAプログラムです。

しかし、開く対象は「ブック」つまりエクセルファイルなんですね。WordやPDFなど、他のアプリケーションのファイルも自動で開きたい場合はどうしたらよいでしょうか…?

ということで、今回はエクセルVBAでエクセル以外の他のアプリケーションのファイルを開く方法についてお伝えします。

よろしくお願いいたします!

スポンサーリンク

前回のおさらいと今回のお題

まず、前回作成したプログラムのおさらいです。

イベントプロシージャAuto_Openにより、二つのブックつまりエクセルファイルを開くプログラムでした。シンプルです。

PDFやWordファイルをWorkbooks.Openで開いてみる

このプログラムですが、自動で開く対象としてPDFファイルや、Wordファイルも追加して実行してみましょう。

以下一文を追加します。

実行してみましょう。PDFに関してはどうやら開いたような気がしますが…

エクセルVBAのWorkbooks.OpenでPDFファイルを開いた

中身ぐちゃぐちゃ…。そしてWordファイルに関しては

エクセルVBAのWorkbooks.OpenでWordファイルを開いた

エラーが出ましたね。実行時エラー「ファイル形式が正しくありません。」が出ました。

当然ですが、Workbooks.OpenではPDFファイルや、Wordファイルは開けないのです。

Wordファイルだけなら、Word.Applicationオブジェクトを使って開くという方法もありますが、ファイル形式ごとに別のやり方…というのは面倒ですよね。

他のやり方はないものでしょうか。

エクセルファイルもそれ以外のアプリケーションのファイルを開く

エクセルVBAでエクセルファイルもエクセル以外の他のアプリケーションのファイルを開く方法についてお伝えします。

ShellオブジェクトのShellExecuteメソッドを使う方法があります。

ShellオブジェクトはWindowsのウィンドウなどを操作することができるオブジェクトで、今回紹介するファイルを開く以外にも様々な操作が可能です。必要に応じて調べてみてください。

Shellオブジェクトの生成

まず、Shell.Applicationオブジェクトの生成ですが

CreateObject(“Shell.Application”)

と書きます。これでShellオブジェクトが生成されます。

ShellExecuteでファイルを開く

任意のファイルを既定のアプリケーションで開きたい場合は

Shellオブジェクト.ShellExecute 開くファイルのフルパス

とします。ShellExecuteメソッドは指定したファイルに対して、オプション指定することで様々な動作を実行することができるのですが、指定しなければ既定の動作である「open」つまりファイルを開く動作が実行されます。

もちろん、エクセルファイルも既定のアプリケーションであるエクセルで開くことができますよ。

エクセル以外のファイルも開くプログラム

ではプログラムにしてみましょう。

Withを使えばShellオブジェクトのために変数宣言やセットしなくて済みますね。

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

エクセルVBAで様々なアプリケーションのファイルを開いた

全てのファイルが、それぞれ既定のアプリケーションで開くことができましたね。

まとめ

エクセルVBAでエクセル以外のアプリケーションも開く方法をお伝えしました。

エクセルファイルも同じ方法で開くことができます。

これでいつも使うファイルは一気に開いてしまいましょう。

さて、しかしながら開くファイルはマクロ内にベタ打ち…もし、ファイルの場所が変わったら、修正が面倒ですよね?

次回、その点を解消していければと思います。

どうぞお楽しみに!

連載目次:エクセルVBAでファイルを開く作業を自動化する方法

お仕事でいつも決まったファイルをいつも一つずつダブルクリックして開くの…毎日だと思うと面倒ですよね。 このシリーズではエクセルVBAでいつも使うファイルを開く作業を自動化する便利ツールを作っていきます。
  1. エクセルVBAでブックを開いたときに他のワークブックも一緒に自動で開く
  2. エクセルVBAでエクセル以外の他のアプリケーションを開く方法