あるSEのつぶやき・改

ITやシステム開発などの技術に関する話題を、取り上げたりしています。

VBScriptでPowerPointにアドインを自動でインストール/アンインストールする方法

はじめに

PowerPoint の便利なアドインを作成することがあると思いますが、配布方法が問題になりますね。

PowerPoint のアドインファイルは、%appdata%\Microsoft\AddIns フォルダにコピーします。Windows 10 であれば、以下のフォルダになります。

  • C:\Users\ [User]\AppData\Roaming\Microsoft\AddIns

階層が深いですね。

しかも、隠しフォルダなのでユーザーによっては見えないと言われてしまうかもしれません。

また、PowerPoint のアドインは、ファイルをコピーしだだけでは登録されず、設定画面で登録する必要があります。

これも手間です。

この2つの作業ですが、VBScript を使用すれば自動化が可能で、インストールとアンインストールの両方を行えるようになります。

今回は、当ブログで配布している「PowerPoint2003カラーパレット」を例にとって、VBScript による PowerPoint アドインのインストールとアンインストールのサンプルコードをご紹介します。

動作確認は、Microsoft 365 の PowerPoint で行っています。

なお、ファイルはShift-JISで保存してください。UTF-8で保存すると「終了していない文字列型の定数です」というエラーが発生します。また、実行前に PowerPoint を終了しておいてください。

PowerPoint アドインのインストール

PowerPoint のアドインを、%appdata%\Microsoft\AddIns にコピー後、アドインを PowerPoint に登録するサンプルコードです。addInName と addInFileName をご自身の環境に合わせるだけで動作します。

なお、PowerPoint アドインは、このサンプルコードのインストーラーと同じフォルダにあるものとします。

On Error Resume Next

Dim installPath
Dim addInName
Dim addInFileName
Dim objPowerPoint
Dim objAddin

'アドイン情報を設定
addInName = "PowerPoint2003カラーパレット"
addInFileName = "PowerPoint2003ColorPallet.ppam" 

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


' PowerPoint インスタンス化
Set objPowerPoint = CreateObject("PowerPoint.Application")

' アドイン登録
Set objAddin = objPowerPoint.AddIns.Add(installPath)
objAddin.AutoLoad = True

' PowerPoint 終了
objPowerPoint.Quit

Set objAddin = Nothing
Set objPowerPoint = Nothing

IF Err.Number = 0 THEN
   MsgBox "アドインのインストールが終了しました。", vbInformation
ELSE
   MsgBox "エラーが発生しました。" & vbCrLF & "実行環境を確認してください。", vbExclamation
End IF

PowerPoint アドインのアンインストール

PowerPoint アドインの登録を解除後、%appdata%\Microsoft\AddIns にあるアドインファイルを削除するサンプルコードです。

addInName と addInFileName をご自身の環境に合わせるだけで動作します

On Error Resume Next

Dim installPath
Dim addInName
Dim addInFileName
Dim addInRegisterName
Dim objPowerPoint
Dim objAddin

'アドイン情報を設定
addInName = "PowerPoint2003カラーパレット"
addInFileName = "PowerPoint2003ColorPallet.ppam"

IF MsgBox(addInName & " アドインをアンインストールしますか?", vbYesNo + vbQuestion) = vbNo Then
  WScript.Quit
End IF

' アドインの登録名取得
addInRegisterName = Mid(addInFileName, 1, Len(addInFileName) - 5)

' PowerPointインスタンス化
Set objPowerPoint = CreateObject("PowerPoint.Application")

' アドイン登録解除
For i = 1 To objPowerPoint.Addins.Count
  Set objAddin = objPowerPoint.Addins.item(i)
  
  If objAddin.Name = addInRegisterName Then
    objAddin.AutoLoad = False
    objPowerPoint.Addins.Remove addInRegisterName
  End If
Next

' PowerPoint 終了
objPowerPoint.Quit

Set objAddin = Nothing
Set objAddins = Nothing
Set objPowerPoint = 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

おわりに

PowerPoint のアドインをインストール、アンインストールするのは面倒ですが、この記事で紹介した方法であれば簡単に作業が完了します。

ぜひご活用ください。

関連記事

Excel や Word のアドインをインストールする方法です。

www.aruse.net

www.aruse.net