複数人が個別に更新したPowerPointファイルを1つのPowerPointファイルにまとめるという作業があります。少なくともスライドレベルの結合を人力で行なうことは不毛なので、自動化したいと思います。
Pythonのライブラリを使えばサクッとできるだろう、と考えていましたが、意外と制約があります。 結論として、今回の用途に最適と判断したのは win32com です。
必要なライブラリをインストールします。
pip install pywin32 python.exe -m pip install --upgrade pip
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)
下記の対策で改善しました。