本記事では、エクセル(Excel)のVBAを使用して、パワポファイルを操作する方法をご紹介します。新規作成・既存ファイルを開く・保存するという基本的な操作と、よくあるエラーに関するトラブルシューティングについて解説していきます。
結論
- 事前準備 (Excel VBAでPowerPointを扱えるようにする準備)
VBAエディタで[ツール]→[参照設定]から[Microsoft PowerPoint XXX(バージョン) Object Library]を参照に追加してください。 - PowerPointを新規作成
Sub CreateNewPowerPoint() Dim ppApp As Object, ppPres As Object ' PowerPointアプリケーションのインスタンスを作成 Set ppApp = CreateObject("PowerPoint.Application") ' 新しいプレゼンテーションを作成 Set ppPres = ppApp.Presentations.Add ' 使用後のオブジェクトを解放 Set ppPres = Nothing Set ppApp = Nothing End Sub
- PowerPointを開く (現在開いているファイル)
Sub OpenExistingPowerPoint() Dim ppApp As Object, ppPres As Object ' 既に開かれているPowerPointアプリケーションにアクセス Set ppApp = GetObject(, "PowerPoint.Application") ' 現在アクティブなプレゼンテーションを取得 Set ppPres = ppApp.ActivePresentation ' 使用後のオブジェクトを解放 Set ppPres = Nothing Set ppApp = Nothing End Sub
- PowerPointを開く (与えられたパスに存在するファイル)
[PowerPointファイルへのパス]にはご自身でファイルパスを入力してください。Sub OpenPowerPointAtPath() Dim ppApp As Object, ppPres As Object Dim filePath As String ' ここにファイルパスを指定 filePath = "[PowerPointファイルへのパス]" ' PowerPointアプリケーションのインスタンスを作成 Set ppApp = CreateObject("PowerPoint.Application") ' 指定されたパスのファイルを開く Set ppPres = ppApp.Presentations.Open(filePath) ' 使用後のオブジェクトを解放 Set ppPres = Nothing Set ppApp = Nothing End Sub
- PowerPointを保存する
Sub SaveCurrentPowerPoint() Dim ppApp As Object, ppPres As Object Set ppApp = GetObject(, "PowerPoint.Application") Set ppPres = ppApp.ActivePresentation ' プレゼンテーションを現在の場所に保存 ppPres.Save ' プレゼンテーションを特定の場所に保存 ' ppPres.SaveAs "PowerPointファイルへのパス" ' 使用後のオブジェクトを解放 Set ppPres = Nothing Set ppApp = Nothing End Sub
解説
本セクションでは、下記の項目について丁寧に解説しています。(クリックで該当部分にジャンプします。)
事前準備 (Excel VBAでPowerPointを扱えるようにする準備)
ここでは、Excel VBAでPowerPoint関連の動作を扱うため、PowerPointオブジェクトライブラリーへの参照設定を追加しています。なお、今回の動作では参照設定を追加しなくてもエラーは起きませんが、その他の動作でエラーが起きないように設定しておくべきです。
- Excel上でAlt + F11キーでビジュアルエディタを開き、同画面上の[ツール]→[参照設定]を開きます。
- そして、表示された画面を下にスクロールしていき、[Microsoft PowerPoint XX Object Library]を選択し、チェックボックスがマークされている状態に設定してください。
これにより、PowerPoint VBAで使用するオブジェクトにExcel VBAからアクセスできるようになります。
PowerPointを新規作成
Excel VBAを使用して新規にPowerPointプレゼンテーションを作成するには、以下のVBAコードを使用します。これによりスライドやその他のオブジェクトを一切含まない空のプレゼンテーションが作成されます。
なお、こちらのコードは下記の流れで実装されています。
- 変数の宣言
- PowerPointアプリケーションインスタンスの作成
- 新しいプレゼンテーションの作成
- オブジェクトの開放
Sub CreateNewPowerPoint()
Dim ppApp As Object, ppPres As Object
' PowerPointアプリケーションのインスタンスを作成
Set ppApp = CreateObject("PowerPoint.Application")
' 新しいプレゼンテーションを作成
Set ppPres = ppApp.Presentations.Add
' 使用後のオブジェクトを解放
Set ppPres = Nothing
Set ppApp = Nothing
End Sub
PowerPointを開く (現在開いているファイル)
Excel VBAを使用して現在開いているPowerPointファイルにアクセスするには、以下のVBAコードを使用します。ppPres
に現在開いているPowerPointファイルが代入されます。
なお、こちらのコードは下記の流れで実装されています。
- 変数の宣言
- PowerPointアプリケーションインスタンスの作成
- 現在アクティブなプレゼンテーションの取得
- オブジェクトの開放
Sub OpenExistingPowerPoint()
Dim ppApp As Object, ppPres As Object
' 既に開かれているPowerPointアプリケーションにアクセス
Set ppApp = GetObject(, "PowerPoint.Application")
' 現在アクティブなプレゼンテーションを取得
Set ppPres = ppApp.ActivePresentation
' 使用後のオブジェクトを解放
Set ppPres = Nothing
Set ppApp = Nothing
End Sub
PowerPointを開く (与えられたパスに存在するファイル)
Excel VBAを使用して与えられたパスに存在するPowerPointファイルにアクセスするには、以下のVBAコードを使用します。ppPres
に与えられたパスに存在するPowerPointファイルが代入されます。
なお、こちらのコードは下記の流れで実装されています。
- 変数の宣言
- ファイルパスを変数に格納
- PowerPointアプリケーションインスタンスの作成
- 与えられたパスに存在するプレゼンテーションの取得
- オブジェクトの開放
Sub OpenPowerPointAtPath()
Dim ppApp As Object, ppPres As Object
Dim filePath As String
' ここにファイルパスを指定
filePath = "[PowerPointファイルへのパス]"
' PowerPointアプリケーションのインスタンスを作成
Set ppApp = CreateObject("PowerPoint.Application")
' 指定されたパスのファイルを開く
Set ppPres = ppApp.Presentations.Open(filePath)
' 使用後のオブジェクトを解放
Set ppPres = Nothing
Set ppApp = Nothing
End Sub
PowerPointを保存する
Excel VBAを使用してPowerPointを保存するには、以下のVBAコードを使用します。なお、別ファイルとして保存する場合はSaveAs
メソッドを使用してください。
なお、こちらのコードは下記の流れで実装されています。
- 変数の宣言
- 現在アクティブなプレゼンテーションの取得
- 現在のファイルを保存
- オブジェクトの開放
Sub SaveCurrentPowerPoint()
Dim ppApp As Object, ppPres As Object
Set ppApp = GetObject(, "PowerPoint.Application")
Set ppPres = ppApp.ActivePresentation
' プレゼンテーションを現在の場所に保存
ppPres.Save
' プレゼンテーションを特定の場所に保存
' ppPres.SaveAs "PowerPointファイルへのパス"
' 使用後のオブジェクトを解放
Set ppPres = Nothing
Set ppApp = Nothing
End Sub
トラブルシューティング
コードをコピペしてもうまく行かない場合には、下記の状況に応じたトラブルシューティングを確認してください。クリックで対応策が表示されます。
- !「コンパイル エラー: メソッドまたはデータメンバーが見つかりません。」というエラーが発生する
コードに問題がないのにこちらのメッセージが表示される場合、[ツール]→[参照設定]で[Microsoft PowerPoint XXX (バージョン) Object Library] が選択されているか確認してください。
- !正しくVBAコードを入力しているのに、PowerPointが開かない
PowerPointがインストールされているか、または別のプロセスがPowerPointを占有していないか確認してください。
おわりに
以上が、エクセル(Excel)のVBAを使用して、パワポファイルを操作する方法をご紹介します。新規作成・既存ファイルを開く・保存するという基本的な操作と、よくあるエラーに関するトラブルシューティングについての解説になります。
ご質問やご不明点がある場合はお気軽にコメントお待ちしております。
ご精読いただきありがとうございました。
コメント
ExcelのVBAでPowePointのプレゼンテーションを作成しています。
マクロ自体はほぼ完成したのですが、最後のところでつまずいております。
生成したPowePointのプレゼンテーションを保存する所はできましたが、
そのプレゼンテーションをPowerPointの「最近使ったアイテム」に追加しようと試みております。単に
Application.RecentFiles.Add Name:=PptFolder & AddFileName
としますと、Excelの最近使ったアイテムに登録されてしまいます。また、
PowerPoint.Application.RecentFiles.Add Name:=PptFolder & AddFileName
とすると コンパイルエラー/メソッドまたはデータメンバーが見つかりません。
また (PptApp はパワーポイントのオブジェクトです)
PptApp.Application.RecentFiles.Add Name:=PptFolder & AddFileName
としても同様のエラーとなります。
どの様に書けば良いのか、お分かりならご教授ください。