概要
このVBScriptは、Excelが開いているかどうかに関わらず、指定したアドインを自動的に追加・有効化するスクリプトです。Excelが既に起動している場合はそのままアドインを追加し、Excelが開いていない場合は起動後にアドインを追加し、処理完了後にExcelを終了します。
特徴
- Excelが開いている場合も、開いていない場合も対応可能
- Excelの完全な起動を待機してからアドインを追加
- ユーザーのアドインフォルダから自動的にアドインをインストール
- Excelが元々閉じていた場合、処理後に自動的に終了
- Excel終了時にポップアップ(保存確認など)を抑制
動作の流れ
- Excelが既に開いているかを確認
- 開いていなければ、Excelを起動し、可視化してブックを開き、完全に初期化する
- ユーザーのアドインフォルダのパスを取得
- 指定したアドイン(
MyAddin.xlam)を追加・有効化 - 成功・失敗のメッセージを表示
- Excelが元々開いていなかった場合は、自動的に終了
使用方法
- スクリプトを
.vbsファイルとして保存(例:InstallExcelAddin.vbs) Book1.xlamを実際のアドインファイル名に変更.vbsファイルをダブルクリックして実行
Const FILLE_NAME="Book1.xlam"' 追加するアドイン名を指定
Call ExcelAddinAutoInstallation
Sub ExcelAddinAutoInstallation()
Dim objExcel, objAddin, excelWasRunning
excelWasRunning = True
' Excelが開いているか確認
On Error Resume Next
Set objExcel = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
' Excelが開いていない場合は新しく起動
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = True ' Excelを可視化して確実に起動させる
objExcel.Workbooks.Add ' 空のワークブックを開いて完全起動を待つ
excelWasRunning = False
End If
Err.Clear
On Error GoTo 0
' ユーザーのアドインフォルダのパスを取得
Dim addinPath
addinPath = objExcel.Application.UserLibraryPath & FILLE_NAME
' アドインを追加
On Error Resume Next
Set objAddin = objExcel.AddIns.Add(addinPath, True)
If Err.Number <> 0 Then
WScript.Echo "アドインの追加に失敗しました: " & addinPath
If Not excelWasRunning Then
objExcel.DisplayAlerts = False
objExcel.Quit ' Excelを閉じる
End If
WScript.Quit
End If
Err.Clear
On Error GoTo 0
' アドインを有効化
objAddin.Installed = True
WScript.Echo "アドインが追加され、有効化されました: " & addinPath
' Excelがもともと開いていなかった場合は終了
If Not excelWasRunning Then
objExcel.DisplayAlerts = False
objExcel.Quit
End If
' クリーンアップ
Set objAddin = Nothing
Set objExcel = Nothing
End Sub


コメント