【VBA】Excelアドインをマクロで無効化(アンインストール)する方法

目次

はじめに

特定のツールをアドインとして提供している場合、その機能を一時的にオフにしたり、不要になった際に簡単に無効化したりする機能があると親切です。利用者が手動で「Excelのオプション」を開いて、アドインのチェックを外すのは少し手間がかかります。

VBAを使えば、「現在有効になっている特定のアドインを、ボタン一つで無効化する」という処理を自動化できます。この記事では、Excelにインストール済みのアドインを名前で探し出し、その組み込みを解除(無効化)する、安全で確実なVBAコードをご紹介します。


アドインを無効化するVBAサンプルコード

このマクロは、以下の手順で動作します。

  1. Excelにインストールされているアドインのリストから、指定した名前のアドインを探します。
  2. アドインが見つかった場合、そのアドインの .Installed プロパティを False に設定して無効化します。
  3. アドインが見つからなかった場合は、その旨をメッセージで伝えます。

完成コード

' 指定された名前のアドインを無効化(アンインストール)する
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 プロパティでアドインを無効化する。

アドインのインストーラーマクロと対になる形でこのアンインストーラーマクロを用意しておけば、利用者がアドインの管理を簡単に行えるようになり、より親切なツールを提供することができます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次