インストール
On Error Resume Next Dim installPath Dim addInName Dim addInFileName Dim objExcel Dim objAddin 'アドイン情報を設定 addInName = "Excel CSV I/O" addInFileName = "ExcelCsvIO.xlam" IF MsgBox(addInName & " アドインをインストールしますか?", vbYesNo + vbQuestion) = vbNo Then WScript.Quit End IF Set objWshShell = CreateObject("WScript.Shell") Set objFileSys = CreateObject("Scripting.FileSystemObject") 'インストール先パスの作成 '(ex)C:\Users\[User]\AppData\Roaming\Microsoft\AddIns\[addInFileName] 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
アンインストールではアドイン登録解除するだけじゃなく、xlaの削除もやらないとあかん。
On Error Resume Next Dim installPath Dim addInName Dim addInFileName Dim objExcel Dim objAddin 'アドイン情報を設定 addInName = "Excel CSV I/O" addInFileName = "ExcelCsvIO.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") 'インストール先パスの作成 '(ex)C:\Users\[User]\AppData\Roaming\Microsoft\AddIns\[addInFileName] 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
ネタ元