Pythonからパワーポイントを操作する方法とコード紹介

※記事内に広告が含まれる場合があります。
テクノロジー
スポンサーリンク

パワーポイントはプレゼンテーションソフトですのでほとんどの場合手作業で作成され、自動化のイメージがないと思う人がほとんどでしょう。

パワーポイントを自動化で処理したいケースとして、大量にあるパワーポイントの特定箇所に会社のロゴマークを入れる必要がでてきた。なんていう場合はどうでしょうか?

手作業で全てのパワーポイントを開き1件ずつパワーポイントのスライドマスタなどで画像を追加すると考えると自動化の余地がありそうですよね?

そこで、今回は上記ケースを想定してpythonからパワーポイントに特定画像を指定箇所に追加する方法をご紹介致します。

スポンサーリンク

複数のパワーポイントの全スライドに画像を入れる方法

スライドマスタの機能説明

パワーポイントに全ての画像を同じ個所に入れる方法としてスライドマスタ機能を使います。

スライドマスタに登録すると全てのパワーポイントのスライドページに同一内容が反映されるので楽です。

Pythonからパワーポイントにアクセス

Pythonからパワーポイントを開き、貼り付けたい画像を読み込んで座標を指定して貼り付ける方法です。

この実装を完了後に全てのパワーポイントファイルをループ処理で読み込んで処理する流れをご紹介します。

Pytyonコード

必要ライブラリのインストール

今回利用するライブラリがインストールされていない方向けのコマンドです。

pip install pywin32
pip install glob

パワーポイントのスライドマスタに画像挿入コード

パワーポイントのスライドマスタに画像を挿入する関数の紹介です。

import win32com.client as win32

def PowerPoint_SlideMaster_add(input_path,gazou_path,output_path):

    #パワーポイントアプリのオブジェクト作成
    app = win32.gencache.EnsureDispatch("PowerPoint.Application")

    #指定ファイルを非表示でオープン
    presentation = app.Presentations.Open(FileName=input_path,WithWindow=0)
    #スライドマスタの幅と高さを取得
    master_w = presentation.SlideMaster.Width
    master_h = presentation.SlideMaster.Height

    #貼り付けたい画像を読み込む
    shape = presentation.SlideMaster.Shapes.AddPicture(FileName=gazou_path,LinkToFile=False,SaveWithDocument=True,Left=0,Top=0)

    #画像の貼り付け位置を調整する ここでは指定を右端と下として算出
    #パワーポイントの真ん中あたりに貼り付け
    right_ = 250
    bottom_ 250
    
    shape.Left = master_w - shape.Width - right_
    shape.Top = master_h - shape.Height - bottom_

    #貼り付けは最背面とする
    shape.ZOrder(1)

    presentation.SaveAs(output_path)
    app.Quit()

    return

実行する時は下記。

input_path="ファイルパスを指定"
gazou_path="ファイルパスを指定"
output_path="ファイルパスを指定"


PowerPoint_SlideMaster_add(input_path,gazou_path,output_path)

実行完了すると指定したパワーポイントの全てのスライドに画像が挿入されています。

ディレクトリ内の全てのパワーポイントに画像を反映させる

前章で作成した関数を用いて複数枚のパワーポイントに画像を自動的に差し込んでいきます。

ここでは対象ディレクトリに画像を差し込みたい全てのパワーポイントがあると仮定し、pptxファイルを曖昧検索で再帰的にディレクトリを回想し探し出しリスト化します。

その後にfor文でループ処理を行い前章の関数PowerPoint_SlideMaster_addを利用することでパワーポイントに画像を埋め込む方法をとりました。

import glob

target_files=glob.glob("ディレクトリpath" + "/**/*pptx",recursive = True)

for i in target_files:

PowerPoint_SlideMaster_add(i[0],"画像ファイルpath",i[0])

パワーポイントが沢山ないと自動化するメリットも薄れてしまいますが、pythonからこんなこともできるんだよ~というご紹介でした。

他にもPythonからアクセスマクロを実行するPythonからAccess(アクセス)マクロを実行やメールの送受信を自動化するPythonでメール送信・メール受信を自動化やエクセル関係の記事をいくつか掲載しておりますのでご興味があればご覧くださいませ。

最後に私がPythonの勉強をして入門者から中級者までにこの本1冊あれば習得できるおすすめ本記事も書いております【本1冊で】Python入門から中級までなれるおすすめ本ご興味がある方は御覧くださいませ。

タイトルとURLをコピーしました