VBSから起動したExcelにアドインを確実に読み込ませる方法




通常、Excelのアドイン(.xlamなど)は、レジストリにパスを登録しておけば自動で読み込まれますが、VBS(Visual Basic Script)などで起動されたExcelでは読み込まれないことがあります。

これは、VBSで起動されたExcelが、通常のGUIユーザーとは別のコンテキストで動作しているため、HKEY_CURRENT_USERHKEY_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() で読み込ませる方法がもっとも確実です。
環境によっては、これが唯一の確実な手段になることもあります。


コメント

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