概要
この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
コメント