はじめに
自作の便利なマクロを「アドイン(.xlam
ファイル)」として配布する際、利用者に手動でインストールしてもらうのは少し手間がかかり、説明も大変ですよね。
もし、アドインのインストールから有効化までを自動で行うマクロがあれば、利用者はボタンをクリックするだけで、すぐにアドインの機能を使えるようになります。
この記事では、VBAを使って特定のExcelアドインを自動でPCに組み込み(インストール)、有効化し、さらにその中のマクロを実行するまでの一連の流れを、分かりやすく解説します。
アドインを自動インストールするVBAサンプルコード
このマクロは、以下の手順で動作します。
- 配布用のExcelファイルと同じフォルダにあるアドインファイル(
.xlam
)を、Excelにアドインとして登録します。 - 登録したアドインを有効化(Installed = True)します。
- アドイン内の特定の準備マクロ(例:
SetupRibbon
)を実行します。
完成コード
' 特定のアドインをインストールし、有効化する
Sub InstallMyToolAddin()
'== 定数と変数を定義します ==
Const ADDIN_NAME As String = "MyToolBox.xlam" '対象のアドインファイル名
Dim addinFilePath As String
Dim targetAddin As AddIn
' アドインファイルのフルパスを生成
addinFilePath = ThisWorkbook.Path & "\" & ADDIN_NAME
'== アドインファイルが存在するか確認 ==
If Dir(addinFilePath) = "" Then
MsgBox "アドインファイルが見つかりません。" & vbCrLf & ADDIN_NAME, vbCritical
Exit Sub
End If
'== アドインをExcelに登録し、オブジェクトとして取得 ==
' Addメソッドの第2引数(CopyFile)をFalseにすると、元の場所のまま参照する
Set targetAddin = Application.AddIns.Add(Filename:=addinFilePath, CopyFile:=False)
'== アドインを有効化(チェックボックスをオンにする) ==
targetAddin.Installed = True
'== アドイン内の初期設定マクロを実行(任意) ==
' リボンメニューのセットアップなどを想定
' Application.Run "'" & ADDIN_NAME & "'!SetupRibbon"
MsgBox ADDIN_NAME & " をインストールし、有効化しました。", vbInformation
End Sub
コードの解説
Const ADDIN_NAME As String = "MyToolBox.xlam"
処理対象のアドインファイル名を定数として宣言しています。アドインのファイル名を変更する場合は、この一行を修正するだけで対応できます。
If Dir(addinFilePath) = "" Then ...
Dir
関数を使って、指定されたパスにアドインファイルが実際に存在するかどうかを確認しています。ファイルが存在しない場合に処理を中断することで、エラーを防ぎます。
Set targetAddin = Application.AddIns.Add(...)
この一行が、アドインをExcelに認識させる(インストールリストに追加する)処理です。
Application.AddIns.Add
: アドインをリストに追加するためのメソッドです。Filename:=addinFilePath
: 追加するアドインファイルのフルパスを指定します。CopyFile:=False
:False
に設定すると、アドインファイルをExcelの既定フォルダにコピーせず、元の場所にあるファイルのまま参照します。配布物の場合、この設定が一般的です。
targetAddin.Installed = True
アドインを有効にするための命令です。これを実行すると、アドインダイアログのチェックボックスがオンの状態になり、アドインの機能が利用可能になります。逆に False
を設定すれば、アドインを無効化できます。
Application.Run "'" & ADDIN_NAME & "'!SetupRibbon"
アドインを有効化した後、そのアドイン内に記述されている特定のマクロ(この例では SetupRibbon
)を実行する命令です。アドインのインストール時に、リボンにカスタムメニューを追加するなどの初期設定を行いたい場合に利用します。 注意: マクロ名の指定は 'アドインファイル名'!マクロ名
という形式で行います。アドイン名にスペースが含まれる可能性も考慮し、シングルクォーテーションで囲むのが安全です。
まとめ
今回は、VBAを使ってExcelアドインのインストールと有効化を自動化する方法をご紹介しました。
Application.AddIns.Add
でアドインをリストに追加する。.Installed = True
プロパティでアドインを有効化する。Application.Run
でアドイン内のマクロを実行できる。
このマクロをインストーラーとして配布用のExcelファイルに組み込んでおけば、利用者はファイル構成などを意識することなく、ワンクリックであなたの作成した便利なツールを使い始めることができます。