【ExcelVBA・マクロ】Excelアドイン(.xlam)の作り方|自作マクロを全てのブックで使えるようにする方法【コピペOK】

ExcelVBA

「便利なマクロを作ったけれど、新しいブックを開くたびに標準モジュールをコピペしている」——そんな経験はありませんか。よく使うマクロは、Excelのアドイン(.xlam形式)にしておくと、Excelを起動している間はどのブックからでも呼び出せるようになり、コピペ作業から解放されます。

この記事では、標準モジュールに書いたマクロをアドイン化する手順と、アドイン内のマクロを他のブックから呼び出す方法、配布・更新時の注意点までを解説します。

スポンサーリンク
スポンサーリンク

アドイン化のメリット

  • 新しいブックを作るたびにマクロをコピペする必要がなくなる
  • ショートカットキーやクイックアクセスツールバーに登録して、いつでも同じ操作で呼び出せる
  • 汎用的な自作関数(ユーザー定義関数)を、どのブックのセルからでも使えるようになる
  • マクロ本体を1ファイルにまとめられるため、修正・配布が楽になる

手順1:アドイン用のブックにマクロを作成する

まず新規ブックを開き、Alt + F11でVBEを開いて標準モジュールを挿入し、アドイン化したいマクロを記述します。今回は例として、選択範囲の空白セルをまとめてハイライトするマクロを用意します。

Sub HighlightBlankCells()

    Dim targetRange As Range
    Dim cell As Range

    If TypeName(Selection) <> "Range" Then
        MsgBox "セル範囲を選択してから実行してください"
        Exit Sub
    End If

    Set targetRange = Selection

    For Each cell In targetRange
        If IsEmpty(cell) Then
            cell.Interior.Color = RGB(255, 255, 0)
        End If
    Next cell

    MsgBox "空白セルのハイライトが完了しました"

End Sub

アドインとして配布する場合、このブックのThisWorkbookに以下のような処理を入れておくと、アドインの有効化・無効化時にメッセージを出すなど柔軟な制御ができます(必須ではありません)。

' ThisWorkbookモジュール
Private Sub Workbook_AddinInstall()
    MsgBox "アドインが有効化されました"
End Sub

Private Sub Workbook_AddinUninstall()
    MsgBox "アドインが無効化されました"
End Sub

手順2:ブックの種類を「Excelアドイン」として保存する

マクロの記述が終わったら、Excel側で以下の手順で保存します。

  1. F12(名前を付けて保存)を押す
  2. ファイルの種類で「Excelアドイン (*.xlam)」を選択する
  3. 保存場所はデフォルトの「AddIns」フォルダのままにしておく(後で有効化しやすくなります)
  4. ファイル名を分かりやすい名前(例:MyMacroTools.xlam)にして保存する

保存すると、ブックのウィンドウが非表示になります。これはアドインの仕様上の正常な動作です。再度編集したい場合は、VBEのプロジェクトエクスプローラーから該当のVBAプロジェクトを選び、直接コードを編集して上書き保存すれば反映されます。

手順3:アドインを有効化する

保存しただけではまだ利用できません。以下の手順で有効化します。

  1. Excelの「ファイル」タブ →「オプション」→「アドイン」を開く
  2. 画面下部の「管理」で「Excelアドイン」を選択し、「設定」ボタンをクリック
  3. 一覧に表示された作成済みアドイン(例:MyMacroTools)にチェックを入れる
  4. 一覧に表示されない場合は「参照」ボタンから.xlamファイルを直接選択する

有効化すると、Excelを起動している間はどのブックからでもアドイン内のマクロが利用可能になります。

手順4:アドイン内のマクロを他のブックから呼び出す

アドインを有効化した後、別のブックのVBEから直接マクロを呼び出せますが、Application.Runを使うと、マクロ名を文字列で指定して実行できます。

Sub CallAddinMacro()
    ' "アドインファイル名!マクロ名" の形式で指定する
    Application.Run "MyMacroTools.xlam!HighlightBlankCells"
End Sub

さらに、クイックアクセスツールバーにボタンを登録したり、Application.OnKeyでショートカットキーを割り当てておくと、マウス操作なしでアドインのマクロを実行できるようになります。

Sub RegisterShortcut()
    ' Ctrl+Shift+Hでアドインのマクロを実行できるようにする
    Application.OnKey "^+H", "'MyMacroTools.xlam'!HighlightBlankCells"
End Sub

注意点

  • 信頼できる場所への配置:セキュリティ設定によっては、アドインファイルが「信頼できる場所」に配置されていないとマクロがブロックされることがあります。社内で配布する場合は、トラストセンターの設定も併せて確認しましょう
  • 更新時は再配布が必要:アドインの中身を修正した場合、利用者全員のPCで新しい.xlamファイルに差し替えてもらう必要があります。バージョン管理の仕組み(社内共有フォルダの最新版を参照する等)を検討しておくと運用が楽になります
  • PERSONAL.XLSBとの違い:個人用マクロブック(PERSONAL.XLSB)も同様に「どのブックからでも呼べるマクロ」を実現できますが、他人への配布を前提としない自分専用の置き場という位置づけです。他の人と共有・配布したい場合はアドイン化が適しています

まとめ

よく使うマクロをアドイン(.xlam)にしておくことで、ブックをまたいだコピペ作業から解放され、ショートカットキーやクイックアクセスツールバーからいつでも同じマクロを呼び出せるようになります。汎用性の高いマクロができたら、ぜひアドイン化を検討してみてください。

スポンサーリンク
スポンサーリンク
ExcelVBA
シェアする
いがぴをフォローする

コメント

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