質問: パワーポイントをVBAで操作することについて質問させて頂きたく存じます(主に勉強方法について)。 EXCEL-VBAとPythonの簡単な基礎だけ学んだ段階のものです。 仕事でパワーポイントを使用していつも行う作業の自動化を希望し、それを通じて同様の操作について自力で作成できるように勉強したいと思っています。 具体的には研究で得た画像A、画像B、およびそれらの重ね合わせ画像Cという組み合わせが大量にあるのですが、それらを同じファイルに入れておいて、それをあるファイルにドラッグ&ドロップするとパワーポイントのスライドの特定の位置に3つの画像が配置されるというプログラムを作成したいと考えております。 Pythonを用いて行うにはPython-pptxなどのパッケージを使用し、VBAの場合にはhttps://tonari-it.com/excel-vba-powerpoint/などのサイトを 参考にさせて頂く方法があるのではないかと思っています。この二つを比較すると、私の力ではPython-pptxを使いこなすには難易度が高すぎでまたテンプレートとするパワーポイントの情報を取得する方法を知らず、VBAを使用した方が容易ではないかと考えております。 このVBAを用いてパワーポイントを操作する方法について(系統立って)書いてある日本語の本や良い教材・勉強法などをご存知ないでしょうか? やや漠然とした質問で申し訳ありませんが、もし良い方法などがあればご教示のほど何卒よろしくお願いいたします。
回答: 系統立って、となると中々難しいですね。 「いつも隣にITのお仕事」以外でそこそこ情報があるのは、自分の知っている範囲だと以下のサイトです。 インストラクターのネタ帳(Tips系) > > パワーポイントマクロ・PowerPoint VBAの使い方 > > > Powerpoint VBAを使おう!(個人ブログなのでそこまで情報は多くない) > > Powerpoint VBA 基本2 オブジェクトの取得 - Powerpoint VBAを使おう! > > > 画像の追加を適当に書くと以下のような感じですかね。 ``` Private Sub teratail162266() '最前面にあるプレゼンテーションを取得 Dim pres As PowerPoint.Presentation Set pres = PowerPoint.Application.ActivePresentation '1個目のスライド Dim sld As PowerPoint.Slide Set sld = pres.Slides.Item(1) Dim heightOfSld As Single 'スライドの縦幅 heightOfSld = sld.Master.Height 'スライドマスター経由で高さを取得 Dim imgPath As String imgPath = "画像ファイルのパス" 'スライドの左上に、ファイル内に埋め込む形で画像を追加 Dim picShp As PowerPoint.Shape 'PowerPointの汎用図形オブジェクト Set picShp = sld.Shapes.AddPicture( _ FileName:=imgPath, _ LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _ Left:=0, _ Top:=0) 'アスペクト比を維持しつつ、スライドの縦いっぱいまで大きくする picShp.LockAspectRatio = msoTrue picShp.Height = heightOfSld Stop 'ブレークポイント End Sub ```