VBScript で Excel にアドインを自動でインストール・アンインストールする方法
いくつかのサイトにサンプルコードが載っているのですが、私の環境(Windows10,Office2013)では
エラーが出るので修正コードを載せます。
1、Excel アドインのインストール(インストール.vbs)
On Error Resume Next
Dim installPath
Dim addInName
Dim addInFileName
Dim objExcel
Dim objAddin
'アドイン情報を設定
addInName = "Pecochanのツール"
addInFileName = addInName & ".xlam"
IF MsgBox(addInName & " アドインをインストールしますか?", vbYesNo + vbQuestion) = vbNo Then
WScript.Quit
End IF
Set objWshShell = CreateObject("WScript.Shell")
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'インストール先パスの作成
installPath = objWshShell.SpecialFolders("Appdata") & "\Microsoft\Addins\" & addInFileName
'ファイルコピー(上書き)
objFileSys.CopyFile addInFileName ,installPath , True
Set objWshShell = Nothing
Set objFileSys = Nothing
'Excel インスタンス化
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
'アドイン登録
Set objAddin = objExcel.AddIns.Add(installPath, True)
objAddin.Installed = True
'Excel 終了
objExcel.Quit
Set objAddin = Nothing
Set objExcel = Nothing
IF Err.Number = 0 THEN
MsgBox "アドインのインストールが終了しました。", vbInformation
ELSE
MsgBox "エラーが発生しました。" & vbCrLF & "実行環境を確認してください。", vbExclamation
End IF
これを実行すると、26行目で「プロシージャの呼び出し、または引数が不正です。」のエラーが発生する。
'アドイン登録
Set objAddin = objExcel.AddIns.Add(installPath, True)
objAddin.Installed = True
以下の様に修正
アドイン登録
objExcel.AddIns.Add(installPath).Installed = True
2、Excel アドインのアンインストール(アンインストール.vbs)
On Error Resume Next
Dim installPath
Dim addInName
Dim addInFileName
Dim objExcel
Dim objAddin
'アドイン情報を設定
addInName = "Pecochanのツール"
addInFileName = addInName & ".xlam"
IF MsgBox(addInName & " アドインをアンインストールしますか?", vbYesNo + vbQuestion) = vbNo Then
WScript.Quit
End IF
'Excel インスタンス化
Set objExcel = CreateObject("Excel.Application")
objExcel.Workbooks.Add
'アドイン登録解除
For i = 1 To objExcel.Addins.Count
Set objAddin = objExcel.Addins.item(i)
If objAddin.Name = addInFileName Then
objAddin.Installed = False
End If
Next
'Excel 終了
objExcel.Quit
Set objAddin = Nothing
Set objExcel = Nothing
Set objWshShell = CreateObject("WScript.Shell")
Set objFileSys = CreateObject("Scripting.FileSystemObject")
'インストール先パスの作成
installPath = objWshShell.SpecialFolders("Appdata") & "\Microsoft\Addins\" & addInFileName
'ファイル削除
If objFileSys.FileExists(installPath) = True Then
objFileSys.DeleteFile installPath , True
Else
MsgBox "アドインファイルが存在しません。", vbExclamation
End If
Set objWshShell = Nothing
Set objFileSys = Nothing
IF Err.Number = 0 THEN
MsgBox "アドインのアンインストールが終了しました。", vbInformation
ELSE
MsgBox "エラーが発生しました。" & vbCrLF & "実行環境を確認してください。", vbExclamation
End IF
3、参考url