はじめに
特定のツールをアドインとして提供している場合、その機能を一時的にオフにしたり、不要になった際に簡単に無効化したりする機能があると親切です。利用者が手動で「Excelのオプション」を開いて、アドインのチェックを外すのは少し手間がかかります。
VBAを使えば、「現在有効になっている特定のアドインを、ボタン一つで無効化する」という処理を自動化できます。この記事では、Excelにインストール済みのアドインを名前で探し出し、その組み込みを解除(無効化)する、安全で確実なVBAコードをご紹介します。
アドインを無効化するVBAサンプルコード
このマクロは、以下の手順で動作します。
- Excelにインストールされているアドインのリストから、指定した名前のアドインを探します。
- アドインが見つかった場合、そのアドインの
.Installed
プロパティをFalse
に設定して無効化します。 - アドインが見つからなかった場合は、その旨をメッセージで伝えます。
完成コード
' 指定された名前のアドインを無効化(アンインストール)する
Sub UninstallMyToolAddin()
'== 定数と変数を定義します ==
Const ADDIN_TITLE As String = "My Tool Box" '対象アドインのタイトル
Dim targetAddin As AddIn
'== 指定したアドインがインストールされているか探します ==
On Error Resume Next 'アドインが見つからない場合のエラーを回避
Set targetAddin = Application.AddIns(ADDIN_TITLE)
On Error GoTo 0 'エラーハンドリングを元に戻す
'== アドインの存在チェックと処理の分岐 ==
If targetAddin Is Nothing Then
' アドインが見つからなかった場合
MsgBox "「" & ADDIN_TITLE & "」はインストールされていません。", vbExclamation
Else
' アドインが見つかった場合
If targetAddin.Installed = False Then
MsgBox "「" & ADDIN_TITLE & "」は既に無効になっています。", vbInformation
Else
' アドインを無効化(チェックボックスをオフにする)
targetAddin.Installed = False
MsgBox "「" & ADDIN_TITLE & "」を無効化しました。", vbInformation
End If
End If
End Sub
コードの解説
Const ADDIN_TITLE As String = "My Tool Box"
無効化したいアドインの「タイトル」を定数として宣言しています。このタイトルは、アドインのファイル名(例: MyToolBox.xlam
)とは異なる場合があるため、「アドイン」ダイアログボックスに表示される名前を正確に指定する必要があります。
On Error Resume Next
Application.AddIns(ADDIN_TITLE)
は、指定した名前のアドインがExcelにインストールされていない場合にエラーを返します。この一行を入れておくことで、エラーが発生してもマクロを停止させず、次の行に進ませることができます。
Set targetAddin = Application.AddIns(ADDIN_TITLE)
Application.AddIns
コレクションの中から、ADDIN_TITLE
と一致する名前のアドインオブジェクトを探し出し、targetAddin
変数に格納しようと試みます。
If targetAddin Is Nothing Then
On Error Resume Next
を使った結果、アドインが見つからなかった場合、targetAddin
変数は空っぽ(Nothing
)のままになります。この If
文で変数が Nothing
かどうかを判定し、アドインが見つかった場合と見つからなかった場合で処理を分岐させています。
targetAddin.Installed = False
アドインを無効化するための中心的な命令です。アドインオブジェクトの .Installed
プロパティを False
に設定することで、「アドイン」ダイアログのチェックボックスがオフになり、アドインの機能が利用できなくなります。
まとめ
今回は、VBAを使ってインストール済みのアドインを無効化する方法を解説しました。
Application.AddIns("アドインのタイトル")
で特定のアドインにアクセスする。On Error Resume Next
を使って、アドインが存在しない場合のエラーをハンドルする。.Installed = False
プロパティでアドインを無効化する。
アドインのインストーラーマクロと対になる形でこのアンインストーラーマクロを用意しておけば、利用者がアドインの管理を簡単に行えるようになり、より親切なツールを提供することができます。