【ExcelVBA】マクロはどこに保存すればいい?
皆さんは作成したマクロをどこに保存していますか?「マクロ有効ブック」「個人用マクロブック」「アドイン」と3つの方法があります。ここでは、それぞれの特徴の違いをまとめ、どの使用方法が最もご自身の作業にあっているのか考えていきましょう。
1. マクロ有効ブックの特徴
通常のブックファイル(.xlsx)にマクロを保存できるように拡張したものが、マクロ有効ブック(拡張子「.xlsm」)です。他の2種との違いは、ファイルはどこに格納してもよく、マクロを実行したいときにファイルを開く必要があります。また複数のファイルに分けることができるので、シートも自由に使えます。
2. 個人用マクロブックの特徴
イメージで言うと、マクロ有効ブックを「常時自動起動化」したものです。ファイル名、保存場所ともあらかじめ決められており、使用できるのは1ファイルのみです。また設定次第でシートを表示することも可能です。
3. アドインの特徴
個人用マクロブックから、シートを完全に奪い去ったものが、アドインです。シートとの依存関係がなくなるため、コーディングは難しいです。しかしデータと切り離されているためバージョンアップは容易です。(マクロブックの場合、マクロを保存しているブックにユーザが書き込みをしている場合、データ移行などの手間が発生する)。保存場所はあらかじめ決められていますが、ファイル名は自由です。
4. 比較
これまで記載した内容をざっとまとめてみました。
観点 | マクロ有効ブック | 個人用マクロブック | アドイン |
---|---|---|---|
ファイル名/拡張子 | ~.xlsm | PERSONAL.xlsb | ~.xlsa |
保存ディレクトリ | 任意のフォルダ | %APPDATA%\Microsoft\Excel\XLSTART\ | %APPDATA%\Microsoft\AddIns\ |
シート表示 | 可能 | 設定次第で可能 | 不可 |
有効範囲 | 開いている時のみ | 常時 | 常時 |
作成難易度 | 低 | 中 | 高 |
5. 私のおすすめ
私が一番使うのは、「マクロ有効ブック」です。理由は作成が「簡単」だからです。 簡単な理由として、シートを自由に使えるということがあります。シートにはマクロを動かすための設定値を入力できるようにしておきます。例えば、「A1セルに入力したフォルダ内のファイル名を取得」「A1セルに名前を入力して対象のファイルに名前を入力」のようなマクロを書くことができます。これを個人用マクロブックやアドインで再現しようとすると、「ポップアップを表示させ、設定値を入力」や「コードに直接書き込む」くらいしかないです。ポップアップで入力した内容は実行のたびに書かなくてはいけませんし、コードに書き込むのはバグを埋め込む危険性が高いですね。「マクロ有効ブック」であれば、シートに入力されているので、設定値の保存もできますね。
またマクロは実行後に「元に戻す操作(Ctrl + Z)」が使用不可となります。マクロを実行した時点で過去の履歴は全て削除され、マクロの実行結果だけが残ります。激しくタイピングする私は常にマクロが使えるような状態はリスクが高いです(笑)
6. 結論
「マクロ有効ブック」「個人用マクロブック」「アドイン」とも開発者、使用者の目線から一長一短があります。ですが、どの保存方法でも実現不可能な機能はないです。ここまでのお話をもとに、どの形式で保存するのが自身に適しているのか参考になれば幸いです。