VBAを使って、ExcelとPowerPointを連携したいというニーズは根強くあります。
「excel vba pp スライド カウント」
という、Excel VBAから、プレゼンテーションファイルのスライド枚数を取得するコードを探していた方による検索キーワードに気づきました。
オブジェクト変数を使ってPowerPointのスライド枚数を取得するサンプルマクロ
以下のExcelマクロを実行すると、PowerPointが起動して、C:\TMP\SAMP.pptxのスライド枚数がメッセージボックスに表示されます。
Dim pp_app As Object ' PowerPoint.Application
Dim pp_prs As Object ' PowerPoint.Presentation
Set pp_app = CreateObject("PowerPoint.Application")
Set pp_prs = pp_app.Presentations.Open("C:\TMP\SAMP.pptx")
MsgBox pp_prs.Slides.Count
pp_prs.Close
Set pp_prs = Nothing
Set pp_app = Nothing
End Sub
Withステートメントを使ってPowerPointのスライド枚数を取得するサンプルマクロ
Withステートメントを使う場合は、以下のようなマクロです。With CreateObject("PowerPoint.Application")
With .Presentations.Open("C:\TMP\SAMP.pptx")
MsgBox .Slides.Count
.Close
End With
.Quit
End With
End Sub
結果はもちろん先のマクロと同じです。
Excel VBAからPowerPointを操作するには
Excel VBAからPowerPointを操作する場合、VBAのCreateObject関数でPowerPointのApplicationオブジェクトのインスタンスを作成したあとは、
PowerPointのオブジェクト構造を理解していないと、結局コードは書けません。
ただ、上記Subプロシージャのレベルであれば、Excel VBAのWorkbooks.Openメソッドでブックを開いてWorkbookオブジェクトを取得できること、
そのブックに含まれるワークシートの枚数をWorksheetsコレクションオブジェクトのCountプロパティで取得できることの類推で、
なんとかならないこともないのではないかなあ、と思います。
PowerPointとExcelのオブジェクト構造はもちろん異なりますが、
PowerPointのPresentations.Openメソッドは
ExcelのWorkbooks.Openメソッドと似ていて、
PowerPointのSlides.Countプロパティは
ExcelのWorksheets.Countプロパティと似た関係にありますから。
- Newer:選択図形のテキストをVBAで取得する
- Older:Excel VBAのCharactersとは
Home » エクセルマクロ・Excel VBAの使い方 » Office連携 » Excel VBAでPowerPointのスライド枚数を取得する