目次

PowerPoint マージツール

複数人が個別に更新したPowerPointファイルを1つのPowerPointファイルにまとめるという作業があります。少なくともスライドレベルの結合を人力で行なうことは不毛なので、自動化したいと思います。

利用ツール

Pythonのライブラリを使えばサクッとできるだろう、と考えていましたが、意外と制約があります。 結論として、今回の用途に最適と判断したのは win32com です。

環境準備

必要なライブラリをインストールします。

pip install pywin32
python.exe -m pip install --upgrade pip
pptmerger.py
import win32com.client
 
ppt = win32com.client.Dispatch("PowerPoint.Application")
ppt.Visible = True
presentation = ppt.Presentations.Open(r"C:\Work\PPTCombined\first.pptx")
 
for f in [r"C:\Work\PPTCombined\second.pptx", r"C:\Work\PPTCombined\third.pptx"]:
    presentation.Slides.InsertFromFile(f, presentation.Slides.Count)
 
presentation.SaveAs(r"C:\Work\PPTCombined\merged.pptx")
ppt.Quit()

実行ファイル化

Windows環境ということもあり、Python環境をインストールしていない人でも使えるようにしたいです。

まず必要なライブラリをインストールします。

pip install pyinstaller

下記のコマンドを実行して、実行ファイルを作成します。distフォルダ以下にexeファイルが出力されます。

pyinstaller --onefile pptmerger.py

トラブルシューティング

自分は下記のエラーで悩まされました。

pywintypes.com_error: (-2147352567, '例外が発生しました。', (0, None, None, None, 0, -2147024773), None)

下記の対策で改善しました。