みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
引き続き、エクセルVBAでPowerPointを操作する方法をシリーズでお伝えしています。
前回はこちらの記事です。
事前準備としてライブラリの追加とPowerPointのアプリケーションの立ち上げるプログラムを紹介しました。
ただ、立ち上げて終了するだけで何の役にも立たないプログラムでしたけどね…
今回はエクセルVBAで特定のPowerPointプレゼンテーションファイルを開くプログラムと開いたプレゼンテーションのスライドを取得するプログラムを作っていきたいと思います。
前回のおさらい
前回作ったプログラムはこちらです。
Sub PowerPointを立ち上げる()
Dim ppApp As New PowerPoint.Application '新規PowerPointアプリケーションオブジェクト
ppApp.Visible = True 'PowerPointアプリケーションを表示
MsgBox "PowerPointが立ち上がりました"
ppApp.Quit 'PowerPointアプリケーションを終了
Set ppApp = Nothing 'オブジェクトを開放
End Sub
PowerPointアプリケーションを立ち上げて、終了するだけの簡単プログラムです。
PowerPointファイルを開くプログラム
上記プログラムをベースとして、特定のPowerPointファイルを開くように修正をしてみました。
こちらです。
Sub PowerPointファイルを開く()
Dim ppApp As New PowerPoint.Application
ppApp.Visible = True
Dim ppPrs As PowerPoint.Presentation 'プレゼンテーションオブジェクト
Set ppPrs = ppApp.Presentations.Open(ThisWorkbook.Path & "\ひな形.pptx") 'プレゼンテーションを開く
MsgBox "PowerPointファイルが開きました"
ppApp.Quit
Set ppApp = Nothing
End Sub
以下でポイントを解説していきますね。
PowerPointプレゼンテーションオブジェクト
まず6行目ですが、PowerPointプレゼンテーションオブジェクト変数の宣言をしています。
書式としては
です。
PowerPointプレゼンテーションオブジェクトはPowerPointファイル全体をつかさどるオブジェクトです。エクセルで言うWorkBookオブジェクトと同列のポジションですね。
PowerPointプレゼンテーションを開く
PowerPointファイルを開く場合は以下のようにOpenメソッドを使います。
ファイル名はフルパスで指定してあげます。
今回は「ThisWorkbook.Path & “\ひな形.pptx”」として、VBAを記述するエクセルファイルと同じフォルダ内の「ひな形.pptx」というファイルを開きます。
Openメソッドは返り値としてPowerPointプレゼンテーションオブジェクトが返りますので、それをSetでppPrsというオブジェクト変数に格納しています。それが7行目ですね。
実行結果
上記プログラムを実行すると
このように事前に準備して置いた「ひな形.pptx」ファイルが開きます。
PowerPointスライドの番号を取得する
ではでは、さらに進めまして、開いたPowerPointプレゼンテーションのスライドについて説明していきます。
上記プログラムを少し修正して、こんなプログラムにしてみました。
Sub PowerPointファイルを開きスライド番号を取得()
Dim ppApp As New PowerPoint.Application
ppApp.Visible = True
Dim ppPrs As PowerPoint.Presentation
Set ppPrs = ppApp.Presentations.Open(ThisWorkbook.Path & "\ひな形.pptx")
Dim ppSld As PowerPoint.Slide 'スライドオブジェクト
Set ppSld = ppPrs.Slides(1) '1ページ目のスライドをセット
MsgBox "スライド1のページ数:" & ppSld.SlideNumber 'スライド1のスライド番号
ppApp.Quit
Set ppApp = Nothing
End Sub
以下で解説していきますね。
PowerPointスライドオブジェクト
まず9行目でPowerPointスライドオブジェクトの宣言をしています。書式は
です。
PowerPointスライドオブジェクトは、PowerPointプレゼンテーション内の個々のスライドをつかさどっています。エクセルでいうとWorksheetオブジェクトと同じレイヤーということになりますかね。
スライド番号でPowerPointスライドオブジェクトをSet
次の10行目ですが、スライド1を宣言したオブジェクト変数「ppSld」に格納しています。書式は
となりますね。
PowerPointスライドオブジェクトはスライド番号でオブジェクトにセットできます。わかりやすくて良いですね。
PowerPointスライドオブジェクトのスライド番号を取得
12行目ですが、取得したPowerPointスライドオブジェクトのスライド番号をメッセージ出力しています。
特定のPowerPointスライドオブジェクトのスライド番号は、SlideNumberプロパティで取得できます。
実行結果
こちらのプログラムを実行すると
このようにメッセージが表示されます。
スライド番号1を取得して、そのスライド番号を出力するので、当たり前ですけどね。
まとめ
以上、エクセルVBAでPowerPointプレゼンテーションを開く方法、また開いた上でスライドを取得する方法についてお伝えしました。
PowerPointのオブジェクト構造として
- PowerPointアプリケーション
- プレゼンテーション
- スライド
- プレゼンテーション
という構造になっているのを覚えておいて頂ければと思います。
エクセルと対比して覚えておくとわかりやすいかも知れませんね。
- (Excelアプリケーション)
- ワークブック
- ワークシート
- ワークブック
次回、スライド上の「シェイプ」についてお伝えできればと思います。
どうぞお楽しみに!
連載目次:エクセルVBAでグラフとPowerPointを操作する
エクセルで様々な集計や分析をした結果の表やグラフを、最終的にPowerPointに貼り付け…という作業は結構多いですよね。1つ2つなら良いですが、大量にあった場合は大変です。そんな時にはVBAで自動化をしてしまいましょう!- エクセルVBAでPowerPointを操作するための準備と最も簡単なプログラム
- エクセルVBAでPowerPointのプレゼンテーションを開く方法・スライドを取得する方法
- エクセルVBAでPowerPointスライド上のシェイプ一覧を取得する
- エクセルVBAでPowerPointの特定のシェイプのインデックス番号を調べる方法
- エクセルVBAでPowerPointのテキストボックスに文字を入力する
- エクセルVBAでPowerPointでタイトルを変更しながらスライドを大量に生成する
- 初心者でも分かる!エクセルVBAでグラフを操作し取り扱うための超基本の第一歩
- エクセルVBAでグラフの元となるデータ範囲を次々と変更するプログラム
- 簡単!エクセルVBAでシート上のグラフをコピーしてPowerPointにペーストする
- エクセルVBAでグラフのデータ範囲を変更しながらPowerPointに連続して貼り付ける
- エクセルVBAでグラフタイトルを変更する方法とChartTitleについて
- エクセルVBAでグラフの軸の最大値・最小値や軸タイトルを設定する方法