和風スパゲティのレシピ

日本語でコーディングするExcelVBA

個人用マクロブックと普通のブックの違い

汎用関数や汎用マクロを保存する方法として、
「個人用マクロブック」というものがあります。

「マクロの記録」を実行したときに、
マクロの保存先を「個人用マクロブック」に設定すると作成される、
「PERSONAL.XLSB」という名前のファイルですね。


このファイルは一度作ると以降はExcelの起動時に裏で開かれるようになるため、
汎用関数の保存場所や、汎用マクロの実行ブックとして活用できます。



さてこの個人用マクロブックですが、保存されている場所を調べると、

C:\Users\ユーザー名\AppData\Roaming\Microsoft\Excel\XLSTART

というフォルダにあります。


実はこのフォルダはExcelのスタートアップフォルダで、
ここにブックを置いておくと、Excel起動時に常に開いてくれるようになります。


常に開くようなブックがある人は、ここに置いておくといいですね。

私はスケジュール管理をExcelでやっているので、
そのブックをここに入れてあります。



続いてもう一つ、個人用マクロブックのよくある誤解なのですが、
このブックはプログラム専用のファイルというわけではありません。

単に作成時の初期設定が非表示になっているだけです。


実際に表示タブを見てみると、

個人用マクロブックの再表示

このように普通の非表示ブックと同じように並んでおり、
再表示すると、そこには普通にワークシートがあります。


定数などをシート上で定義したいときや、
シートモジュールにイベントマクロのテンプレートを置いておきたいときは、
通常と同様ワークシートを使うことができますので覚えておきましょう。



さて本題です。


個人用マクロブックとは、Excelの起動時に裏で開かれるブックです。


ですが今日の説明をよ~く思い出してみてください。


まず「起動時に開く」のは、こいつの特性ではありませんよね?
XLSTARTフォルダさんの能力です。

ここに入れとけばすべてのブックでできることです。



続いて「裏で開かれる」は、ただ非表示だっただけです。

Windowオブジェクト.Visible = False

で操作する通り、Windowオブジェクトさんの能力です。


ということで、XLSTARTフォルダに非表示のブックを保存すると、
Excelの起動時に裏で開かれるブックにすることができる
わけですね。



え、じゃあ個人用マクロブックってなんなの・・?



結論から言うと、
個人用マクロブックは普通のブックとほとんど変わりません。


別にPERSONALという名前が嫌なら、汎用関数.xlsmとかにしても全く問題ありません。

汎用関数.xlsm、汎用マクロ.xlsm、コードテンプレート.xlsm
みたいに、複数に分けてXLSTARTフォルダに置いておいても同じように使えます。


XLSBという拡張子が見慣れないですがこれも個人用マクロブックの特性ではなく、
普通に使っていい拡張子(バイナリ形式で保存するExcelブック)です。


いろいろ試したときに実行速度も図ってみましたが差はありませんでした。


ということで、個人用マクロブックといっても普通のブックですので、
別にこれにこだわらず、普通にXLSTARTフォルダに非表示のブックを作ってマクロを書いてもOKということですね。


いろいろ試して調べた細かい違いは以下の通りですので、
この違いをうまく使いたいときだけ、意識して使い分けてください。

Excelを立ち上げたときの挙動

Excelを立ち上げたときに、普通は空のブックが開かれます。

Excel2016以降だと、こんなスタート画面が開きます↓

スタート画面

はいこんばんは(´∀`)ノ


このスタート画面ですが、特定のブックを指定して開いたときはもちろん出ません。

そのブックが開かれますから、空のブックも作られませんね。


この「特定のブックを開いたとき」には、XLSTARTのブックも含まれるため、
XLSTARTフォルダに何かブック(たとえ非表示でも)を入れると、
Excelを起動しても空のブック(スタート画面)が作られなくなります。


なので、例えばタスクバーのExcelアイコンをクリックしたときに空のブックが欲しかったらXLSTARTフォルダにブックは置いてはいけないのですが、

PERSONAL.XLSB(個人用マクロブック)だけは、
XLSTARTに置いてあっても空のブック(スタート画面)が作成されます。


個人用マクロブック以外のブックをXLSTARTに置くと、
ExcelのアイコンからExcelを立ち上げても空のブックがもらえなくなる

というのは一応認識しておいてください。

マクロの記録先

当たり前と言っちゃ当たり前ですが、マクロ記録機能を使うときに、記録したマクロの保存先に個人用マクロブックが指定できます。

他の記録先である「作業先のブック」にはActiveWorkbookしか指定できないため、
非表示のブックにマクロを記録するには、個人用マクロブックを使うしかありません。


その違いが活きる場面はあるの?っていう違いですが、
いうなればこれが「個人用マクロブック」の能力なんでしょうね。


マクロ記録の記録先をExcelのスタートアップフォルダにすることができるブック

というのが、個人用マクロブックなんだと思います。

マクロの配付時

汎用マクロを他の人に配布する際、ファイル名がPERSONAL.XLSBのままだと、
その人の個人用マクロブックとバッティングしてしまいます。


なので、配付時は名前を変えた方がおすすめ

と言いたいところなのですが・・・


名前を変えると先ほどの「空のブックが開かなくなる」問題で多分クレームが来ます。


マクロなんて知らない一般ユーザーは、

「もらったマクロ入れたら空のブックが作られなくなった」

と言ってくるかもしれません。



いやそれならまだましで、

「Excelが立ち上がらなくなった」

という人も多分出ます(実話)



なので、マクロの配付時はPERSONAL.XLSBのまま配付し、
「個人用マクロブックを使っている人は、すみませんが名前を変えてください」
とやった方がいいかもしれません。

話が分かる方に説明した方が簡単だから。


というかそこまで大がかりな配付ならアドインの方がいいかもしれませんので、
そちらも含めて検討してください。




以上で個人用マクロブックと普通のブックの違いの解説を終わります。



なお、本件はMicrosoftの公式ドキュメントにも細かい記載がなかったため、
私がいろいろと試して知った範囲での解説です。


もしかしたらもっと細かいところで違いがあるのかもしれませんので、
その点はご了承ください。

ここにない細かい違いをご存じの方がいらっしゃいましたら、
ブログのコメントかTwitterでご連絡いただけると嬉しいです。


お便りお待ちしております(´∀`)ノ