通常、Excelのアドイン(.xlamなど)は、レジストリにパスを登録しておけば自動で読み込まれますが、VBS(Visual Basic Script)などで起動されたExcelでは読み込まれないことがあります。
これは、VBSで起動されたExcelが、通常のGUIユーザーとは別のコンテキストで動作しているため、HKEY_CURRENT_USER
や HKEY_LOCAL_MACHINE
に設定されたアドインの情報が無視されるケースがあるためです。
■ 解決策:起動後にアドインを明示的に読み込ませる
以下のVBSスクリプトを使えば、すでに起動しているExcelインスタンスに対して、手動でアドインを読み込ませることができます。
■ サンプルコード(VBS)
Const ADDIN_FILENAME = "YourAddin.xlam" ' ← ファイル名のみ記載(パスは不要)
On Error Resume Next
Set xl = GetObject(, "Excel.Application")
On Error GoTo 0
If Not xl Is Nothing Then
xl.Visible = True
Dim libPath, fullPath, ai, i
libPath = xl.Application.LibraryPath
fullPath = libPath & "\" & ADDIN_FILENAME
' すでに登録済みなら一度削除
For i = xl.AddIns.Count To 1 Step -1
If LCase(xl.AddIns(i).FullName) = LCase(fullPath) Then
xl.AddIns(i).Installed = False
xl.AddIns(i).Delete
Exit For
End If
Next
' アドイン再追加
Set ai = xl.AddIns.Add(fullPath, False)
If Not ai Is Nothing Then
ai.Installed = True
Else
MsgBox "アドインの読み込みに失敗しました:" & vbCrLf & fullPath
End If
Else
MsgBox "Excelが起動していません"
End If
■ ポイント
GetObject(, "Excel.Application")
で現在起動中のExcelを取得します.AddIns.Add(...)
でアドインを追加(※第2引数False
は登録しない・一時的読み込み).Installed = True
によってアドインを有効化
■ 注意点
.xlam
のパスはフルパスで指定してください(例:C:\Users\YourName\Documents\MyAddin.xlam
)- Excelが起動していない場合は読み込みできません(事前に起動が必要です)
- このスクリプトは別ファイルとして
.vbs
に保存して、必要なタイミングで実行できます
■ まとめ
VBSなどで起動したExcelにアドインが読み込まれない場合は、レジストリではなく、明示的に .AddIns.Add()
で読み込ませる方法がもっとも確実です。
環境によっては、これが唯一の確実な手段になることもあります。
コメント