和風スパゲティのレシピ

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

個人用マクロブックの作り方と使い方3選

汎用関数やツールバーに配置したい便利マクロなど、
「いつでも使えるコード」を書く場所として便利な
個人用マクロブックの作り方・使い方を紹介します。

個人用マクロブックとは

マクロを作ったり、その中で関数を作ったりしていると、

「この関数を他のマクロでも使い回したいな」
「このマクロをツールバーに置いていつでも実行したいな」

と思う汎用マクロ・関数ができることがあります。


本サイトで紹介しているものだと、表エリアを推定して罫線を引くこのマクロ↓や、

自動罫線マクロサンプル


文字列のカッコの中身を取得するこの関数↓

MsgBox Midカッコ内("みかん(愛媛産)") ' ← 「愛媛産」が表示される

などですね。


さてこのようなマクロを作るときに大事になるのが

「そのマクロをどこに書いてどうやって呼び出すか」

なのですが、これに活用できるのが「個人用マクロブック」です。



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

一度作ると以降はExcelを立ち上げるときに自動で開かれるようになるので、
そこにマクロを書いておくと、いつでも使えるようになるということですね。


作り方・使い方ともに簡単で、しかも便利ですので、
しっかりと活用できるようになっておきましょう。

個人用マクロブックの作り方

個人用マクロブックを作るのはとても簡単です。


「開発」タブの「マクロの記録」で出てくる、

マクロ記録ウィンドウ

このウィンドウの「マクロの保存先」を、
「個人用マクロブック」にしてOKを押すだけです。


マクロ記録が始まって「Macro1」が作られますが、
特に用はないので停止&削除してしまって構いません。


この時、Macro1が作られた標準モジュール搭載先を調べると、このように「PERSONAL.XLSB」というブックであることがわかります。

PERSONAL.XLSB

これがまさに個人用マクロブックです。


このブックは一度保存すると、
以降はExcelを開いたときに必ず裏で開かれるようになります。


それ以外は普通のブックと特に変わったところはありませんので、
ここにいつも通り標準モジュールなどを追加してコードを書くだけで、
「いつでも使えるコード」を実現できるということです。


導入が非常に簡単なのが、個人用マクロブックの良さですね!

個人用マクロブックの使い方3選

「いつでも使えるコード」を書くのに便利な個人用マクロブックさんですが、
大きく分けて3つ(+1つ)の活用方法があります。

便利マクロを作ってツールバーやショートカットにセットする

例えば冒頭で紹介した

自動罫線マクロサンプル

このマクロを、個人用マクロブックに書いておきます。


個人用マクロブックはExcelを起動すると常に開かれていますので、
このマクロは「マクロの一覧」アイコンからいつでも実行ができます。


それを活用して「クイックアクセスツールバー」に登録してみましょう。

クイックアクセスツールバー上で「右クリック→ユーザー設定」を開き、
クイックアクセスツールバーにマクロを登録する
↑このように「コマンド」欄を「マクロ」に設定すると、
自分のマクロをクイックアクセスツールバーに登録することができます。


例えば今回の表罫線マクロを、
登録したマクロ
このようにツールバーに設置をすることができます。

アイコンも変えたりできますので、押しやすそうなボタンにしてみてください。



また、マクロの一覧の「オプション」から

マクロをショートカットキーに登録する

このようにショートカットキーを設定しておけば、
このキーでいつでもこのマクロを呼び出せます。


このアニメはショートカットキーCtrl+Lを使っていますね。

自動罫線マクロサンプル

ちなみにLはLineの頭文字です。


Excel既定のショートカットキーでは、
「T」と「L」がどちらも「テーブルの設置」でかぶっているので、
片方を上書きしました。

ここに設定したショートカットキーは、Excelの標準設定より優先できます。
(やりすぎは禁物ですが)


このように、個人用マクロブックに書いた便利マクロをリボン・ツールバーやショートカットキーにセットすることで、Excelに新しい機能をつけるようなことができます。


そういうと何か難しい印象を受けるかもしれませんが、

  • 全シートのA1セルを選択する
  • 上下左右の印刷余白を0にする
  • #N/Aや#DIV/0を消去する

など、3~4行のマクロでも超絶便利なマクロだって作れます。


自分の業務をマクロにできることこそ「個人用」の意義ですので、
日々の業務でよくやる操作を、ガンガンここに書いて、
ぺたぺたボタンにしていきましょう。


ちなみに私はこんな感じになっています↓

個人用マクロブックをリボン/ツールバーに登録



最後にもう一度リンクするのでこのまま読み進めてOKですが、
本ブログの「便利マクロ集」へのリンクはこちらからどうぞ。

カテゴリ記事一覧:汎用マクロ・便利ツール

汎用関数集(ライブラリ)の保管場所として使う

続いて2つ目の使い方が、
「汎用関数集」のオリジナルを保管する場所として使う方法です。

カッコつけて言うと「ライブラリ」ですね。


例えば先ほどの、

MsgBox Midカッコ内("みかん(愛媛産)") ' ← 「愛媛産」が表示される

こんな関数は便利なのですが、
「使う際にどこからこの関数をコピペしてくるか」
が問題になります。


その方法として一番簡単なのが、個人用マクロブックを使って、
ひとつのモジュールに作った関数をすべて書いておくことです。


個人用マクロブック内に、「汎用関数」みたいなモジュールを作り、
そこに作った汎用関数を全部おいておきます。

モジュールがひとつだけなので、使うときはこのモジュールをマウスで持っていくだけで済みますね↓

汎用関数モジュールをドラッグ&ドロップでコピー


汎用関数を下手に分別すると、どの関数がどこにあるのかわからなくなったり、
分類を変えたときに旧作成ブックの互換性がなくなって困ります。


別に使わない関数が100個あっても問題はありませんので、
たとえ使う関数が1個でも、モジュールごと持って行ってしまって構いません。


まず最初はこの方法で汎用関数を管理してみてください。

モジュールの分類やほかの方法を考えるのは、
クラスモジュールで汎用クラスを作り始めたくらいでも遅くありません。



なお、この作成するモジュール名は「Ut」など短い名前にしておくと、

プロシージャリスト

このように「モジュール名.」からそのモジュール内のプロシージャを選択呼出することができます。
これも便利ですので、活用を検討してみてください。

ちなみにUtとはユーティリティの略です。

コードテンプレート置き場として使う

3つ目はよく書くコードのテンプレート置き場として活用する方法です。

例えば、

' 全シートをループ
Dim ws As Worksheet
For Each ws In wb.Worksheets


Next

や、

' ダブルクリック実行マクロ
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    Dim R As Long: R = Target.Row
    Dim C As Long: C = Target.Column
    Dim Adrs As String: Adrs = Target.Address(False, False)

    ' ◇ データエリアで実行時
    If R >=  Then
        Select Case C

        Case 

        End Select
    End If

    ' ◇ その他単独セルで実行時
    If Adrs = "A1" Then

    End If

End Sub

などですね。

このようなコードのテンプレートを個人用マクロブックに書いておくことで、
定型のコードをすぐにコピペで持ってくることができます。


この使い方もかなり便利ですが、意外とやっている人が少ない印象ですので、
ぜひ身に着けてください。

テンプレートように整理するのが面倒なら、
作ったマクロをモジュールごとドラッグしてコピーしておくだけでも役に立ちます。


あとはネットのコードをとりあえずここにコピペしておくのもいいですね。
URL付きにしておくと読みたくなったら解説も読めるのでなおよいです。


なお、実際にこれをやるときは、
1の便利マクロや2の汎用関数の作成に邪魔にならないよう、

'' 全シートをループ
'Dim ws As Worksheet
'For Each ws In wb.Worksheets
'
'
'Next

このようにコメントアウトしておきましょう。

これでコンパイルなどを実行しても、
テンプレートコードのエラーで止まったりしなくなります。

マクロ記録の保存先に使う

使い方3選の中には、個人用マクロブックを作るときに行った「マクロ記録」を数えていませんでした。

なんでかというと、単純にたいして便利じゃないからです。


マクロ記録は、普通にそのマクロを実行する作業ブックに記録した方が、
実際に処理するシートも指定しやすくて便利です。

上記の1、2、3で個人用マクロブックを使っていると、
マクロ記録による新規モジュール挿入が邪魔になりますしね。


なので個人用マクロブックをわざわざマクロ記録に使う必要はないと思いますが、
このブックはいつでも記録先に選べますので一応覚えておいて下さい。




以上で個人用マクロブックの作り方と使い方の紹介を終わります。

  1. 便利マクロを作ってツールバーやショートカットにセットする
  2. 汎用関数集(ライブラリ)の保管場所として使う
  3. コードテンプレート置き場として使う

の3つを紹介しましたね。


特定の業務を自動化するためのマクロではなく、
どんな業務にも使えるようなマクロを作れるようになると、
業務効率化の幅が広がります。

その時個人用マクロブックが強い味方になってくれますので、
是非マスターして、自分のブックをコツコツ育てていってください。


個人用マクロブックの関数/マクロ数=自分の経験値

だと思って育てると、結構楽しく勉強ができますよ。


また、ネットのコードのコピペ図書館としても、
個人用マクロブックは最適です。


とりあえずうちのブログからは、

カテゴリ記事一覧:汎用マクロ・便利ツール
カテゴリ記事一覧:汎用関数集

この辺を覗いて、気に入ったやつがあれば持って行ってください。

おまけ:細かいテクニック

個人用マクロブックの保存場所

個人用マクロブックは、

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

こんなフォルダに保存されています。


頑張ってたどっていってもいいですが、せっかく個人用マクロブックの記事なので、

Sub ブックが保存されているフォルダを開く(wb As Workbook)
    Shell "C:\windows\explorer.exe " & wb.Path & "\", vbNormalFocus
End Sub

を個人用マクロブックの汎用関数に追加して、

Call ブックが保存されているフォルダを開く(Thisworkbook)

で開いてみてもいいですね。


このフォルダ「XLSTART」は、実はExcelのスタートアップフォルダです。

ここに保存したブックは個人用マクロブックじゃなくても「常に開かれるブック」になりますので、常に開いていたいブックがあればここに置いておくとよいです。


私は手帳(スケジュール管理+アイデアメモ)をExcelにやらせているので、
そのファイルがここに入っていますね。

プロジェクトの名前設定

この部分の↓

PERSONAL.XLSB

VBAProject(PERSONAL.XLSB)は、
実はVBAProjectの名前を変更できます。


この場所(プロジェクトエクスプローラ)の並び順はここの名前で決まりますので、
個人用マクロブックは、

AA_PERSONAL
ZZ_PERSONAL

あたりにすると、「必ず一番上/一番下」になるように設定することができます。


個人用マクロブックの位置が固定されるととても便利ですので、
好きな名前に変えてみて下さい。

もちろん個人用マクロブック以外のブックでも、名前変更は可能です。
※ こだわりすぎても時間の無駄になるので注意



個人用マクロブックを使う際は、
この辺の細かいテクニックもおさえておくと使い勝手がよくなります。

長い付き合いになるブックですので、
ちょっとずつカスタマイズして、育てていってください。