Excel にアドイン | ぺこちゃんのPC教室

ぺこちゃんのPC教室

パソコンに関する備忘録を書いていこうと思います。

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

https://www.aruse.net/entry/2018/09/13/081734