Excel VBAを使ってPowerPointファイルを一括PDF化する方法

Visual Basic

Excel VBAを使用して複数のPowerPointファイルを一つのプレゼンテーションにまとめ、最終的にPDF化する方法をご紹介します。これにより、社員が個別に作成した自己紹介スライドを手動で集約する手間を省き、効率的に作業を進めることができます。

Excel VBAでPowerPointファイルを操作する基本的な流れ

Excel VBAを使ってPowerPointファイルを操作するには、まずPowerPointを操作するための参照設定を行う必要があります。これにより、VBAからPowerPointを操作することが可能になります。

PowerPointファイルを操作する流れは以下の通りです。

  • 指定されたフォルダからPowerPointファイルを取得
  • 新しいPowerPointファイルを作成し、指定されたファイルをコピー
  • 全てのファイルをまとめた後、PDFとして保存

VBAコードの基本構造

以下は、指定されたフォルダからPowerPointファイルを読み込み、一つにまとめてPDFに保存するためのVBAコードの例です。

Sub CreateAndSavePDF() 
Dim pptApp As Object
Dim pptPres As Object
Dim slide As Object
Dim folderPath As String
Dim fileName As String
Dim newPpt As Object
folderPath = InputBox("PowerPointファイルが保存されているフォルダパスを入力してください")
Set pptApp = CreateObject("PowerPoint.Application")
pptApp.Visible = True
Set newPpt = pptApp.Presentations.Add
fileName = Dir(folderPath & "\*.pptx")
Do While fileName <> ""
Set pptPres = pptApp.Presentations.Open(folderPath & "\" & fileName)
pptPres.Slides.Copy
newPpt.Slides.Paste
pptPres.Close
fileName = Dir
Loop
newPpt.SaveAs folderPath & "\自己紹介パワポまとめ.pptx"
newPpt.SaveAs folderPath & "\自己紹介パワポまとめ.pdf", 32
newPpt.Close
pptApp.Quit
End Sub

コードの説明と実行方法

このVBAコードは、指定されたフォルダから全てのPowerPointファイル(*.pptx)を読み込み、それぞれのスライドを新しいプレゼンテーションにコピーします。コピーが完了したら、そのプレゼンテーションを「自己紹介パワポまとめ.pptx」として保存し、PDF形式にも保存します。

コードを実行するには、ExcelのVBAエディタで新しいモジュールを作成し、上記のコードを貼り付けてください。実行時に、PowerPointファイルが保存されているフォルダパスを入力するように求められます。適切なパスを入力すると、スライドのコピーとPDF化が自動で行われます。

Excel VBAでPowerPointを操作する際の注意点

Excel VBAでPowerPointを操作する際は、いくつかの点に注意が必要です。特に、以下の点を確認してから実行してください。

  • PowerPointの参照設定を行う。VBAエディタの「ツール」>「参照設定」から、「Microsoft PowerPoint xx.0 Object Library」にチェックを入れてください。
  • フォルダパスの指定が正しいかどうかを確認。パスの区切り文字は「¥」を使い、相対パスではなく絶対パスを使用するようにしましょう。
  • PowerPointファイルが閉じられていない場合、エラーが発生することがあります。実行前に全てのPowerPointファイルが閉じられていることを確認してください。

まとめ

Excel VBAを使用して複数のPowerPointファイルを一括でPDF化する方法について解説しました。この方法を活用することで、複数のプレゼンテーションファイルを簡単にまとめ、効率よくPDF化することができます。VBAのコードはカスタマイズ可能で、業務に合わせて変更できるので、ぜひ自分の環境に合った形で試してみてください。

コメント

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