PowerPoint VBAを使い、複数のPPTXファイルを1つのファイルに結合するマクロをご紹介します。
バラバラのファイルをまとめて印刷したいときや、1つのPDFに書き出したいときに有効です。
もうコピペを繰り返す必要はありません。
コードは神AI「ChatGPT」で開発しました。ChatGPTについては、次の記事で解説しています。
![](https://ppdtp.com/wp-content/uploads/2023/02/chatgpt-ec-320x180.png)
複数のPPTXファイルを1つのファイルにまとめるマクロ
コード
Sub MergeFiles() '変数の宣言 Dim pptApp As PowerPoint.Application Dim pptPres As PowerPoint.Presentation Dim pptSlides As PowerPoint.Slides Dim pptSlide As PowerPoint.Slide Dim pptFile As String Dim i As Integer '新しいPowerPointアプリケーションを作成する Set pptApp = New PowerPoint.Application 'pptxファイルのパスを指定する pptFile = "C:¥MyFolder¥1.pptx" 'pptxファイルを読み込む Set pptPres = pptApp.Presentations.Open(pptFile) '各pptxファイルを読み込む For i = 2 To 3 'pptxファイルのパスを指定する pptFile = "C:¥MyFolder¥" & i & ".pptx" 'pptxファイルを読み込む pptPres.Slides.InsertFromFile pptFile, pptPres.Slides.Count Next i '結合したプレゼンテーションを保存する pptPres.SaveAs "C:¥MyFolder¥MergeFiles.pptx" End Sub
マクロの使い方は、次の記事で解説しています。
![](https://ppdtp.com/wp-content/uploads/2020/12/startup-macro-ec-320x180.png)
パスの設定
pptFile = "C:¥MyFolder¥1.pptx"
pptFile = "C:¥MyFolder¥" & i & ".pptx"
上記コードの「C:¥MyFolder」を連結させたいファイルが格納されているフォルダまでのパスに変更します。2つとも同じ場所になります。
pptPres.SaveAs "C:¥MyFolder¥MergeFiles.pptx"
続いて、上記コードの「C:¥MyFolder」を連結させたファイルを保存したいフォルダまでのパスに変更します。動作確認では連結させたいファイルを格納しているフォルダに保存する設定にしています。
「MergeFiles」の部分が連結したファイルのファイル名になるので好きな名前に変更可能です。
パスの取得方法は「Shift」キーを押しながらフォルダを右クリック →「パスのコピー」で行います。
連結させるファイル数の設定
For i = 2 To 3
上記コードの「3」の値を連結させるファイル数に変更します。動作確認では3つのファイルを連結させるので「3」に設定しています。
実行結果
上図のように連結したいファイルを1つのフォルダに格納し、ファイル名を連結したい順に半角数字の連番にします。今回は、3つのファイルを連結させます。
- 連結するファイルのスライドサイズは統一させましょう。バラバラのサイズでも実行可能ですが、1つ目に読み込んだファイルのスライドサイズで統一されます。
マクロを実行すると、ファイルが連結された状態の新規ファイルが生成されます。
保存先に指定したフォルダを確認すると結合された「MergeFiles.pptx」という名前のファイルが保存されています。
各スライドを別々のファイルに分けて保存するマクロ
別々のファイルに分かれたスライドを1つに結合したいときもあれば、各スライドを別々のファイルに分けたいときもあります。
各スライドを別々のファイルに分けて保存したいときは次のマクロを使いましょう!
![](https://ppdtp.com/wp-content/uploads/2023/02/vba-save-each-slide-as-separate-pptx-ec-320x180.png)