エクセルVBAでPowerPointのプレゼンテーションを開く方法・スライドを取得する方法


opener

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

引き続き、エクセルVBAでPowerPointを操作する方法をシリーズでお伝えしています。

前回はこちらの記事です。

エクセルVBAでPowerPointを操作するための準備と最も簡単なプログラム
エクセルVBAでPowerPointを操作するシリーズ、第一回目です。エクセル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プレゼンテーションオブジェクト変数の宣言をしています。

書式としては

Dim オブジェクト変数名 As PowerPoint.Presentation

です。

PowerPointプレゼンテーションオブジェクトはPowerPointファイル全体をつかさどるオブジェクトです。エクセルで言うWorkBookオブジェクトと同列のポジションですね。

PowerPointプレゼンテーションを開く

PowerPointファイルを開く場合は以下のようにOpenメソッドを使います。

PowerPointアプリケーションオブジェクト.Presentasions.Open(ファイル名)

ファイル名はフルパスで指定してあげます。

今回は「ThisWorkbook.Path & “\ひな形.pptx”」として、VBAを記述するエクセルファイルと同じフォルダ内の「ひな形.pptx」というファイルを開きます。

Openメソッドは返り値としてPowerPointプレゼンテーションオブジェクトが返りますので、それをSetでppPrsというオブジェクト変数に格納しています。それが7行目ですね。

実行結果

上記プログラムを実行すると

エクセルVBAでPowerPointプレゼンテーションを開いた

このように事前に準備して置いた「ひな形.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スライドオブジェクトの宣言をしています。書式は

Dim オブジェクト変数名 As PowerPoint.Slide

です。

PowerPointスライドオブジェクトは、PowerPointプレゼンテーション内の個々のスライドをつかさどっています。エクセルでいうとWorksheetオブジェクトと同じレイヤーということになりますかね。

スライド番号でPowerPointスライドオブジェクトをSet

次の10行目ですが、スライド1を宣言したオブジェクト変数「ppSld」に格納しています。書式は

Set オブジェクト変数 = PowerPointプレゼンテーションオブジェクト.Slides(スライド番号)

となりますね。

PowerPointスライドオブジェクトはスライド番号でオブジェクトにセットできます。わかりやすくて良いですね。

PowerPointスライドオブジェクトのスライド番号を取得

12行目ですが、取得したPowerPointスライドオブジェクトのスライド番号をメッセージ出力しています。

特定のPowerPointスライドオブジェクトのスライド番号は、SlideNumberプロパティで取得できます。

PowerPointスライドオブジェクト.SlideNumber

実行結果

こちらのプログラムを実行すると

エクセルVBAでPowerPointスライドの番号を表示

このようにメッセージが表示されます。

スライド番号1を取得して、そのスライド番号を出力するので、当たり前ですけどね。

まとめ

以上、エクセルVBAでPowerPointプレゼンテーションを開く方法、また開いた上でスライドを取得する方法についてお伝えしました。

PowerPointのオブジェクト構造として

  • PowerPointアプリケーション
    • プレゼンテーション
      • スライド

という構造になっているのを覚えておいて頂ければと思います。

エクセルと対比して覚えておくとわかりやすいかも知れませんね。

  • (Excelアプリケーション)
    • ワークブック
      • ワークシート

次回、スライド上の「シェイプ」についてお伝えできればと思います。

エクセルVBAでPowerPointスライド上のシェイプ一覧を取得する
エクセルVBAでPowerPointを操作する方法についてシリーズでお伝えしています。今回はPowerPointスライドのシェイプ一覧を取得する方法とShapeとShapesオブジェクトについてです。

どうぞお楽しみに!

連載目次:エクセルVBAでグラフとPowerPointを操作する

エクセルで様々な集計や分析をした結果の表やグラフを、最終的にPowerPointに貼り付け…という作業は結構多いですよね。1つ2つなら良いですが、大量にあった場合は大変です。そんな時にはVBAで自動化をしてしまいましょう!
  1. エクセルVBAでPowerPointを操作するための準備と最も簡単なプログラム
  2. エクセルVBAでPowerPointのプレゼンテーションを開く方法・スライドを取得する方法
  3. エクセルVBAでPowerPointスライド上のシェイプ一覧を取得する
  4. エクセルVBAでPowerPointの特定のシェイプのインデックス番号を調べる方法
  5. エクセルVBAでPowerPointのテキストボックスに文字を入力する
  6. エクセルVBAでPowerPointでタイトルを変更しながらスライドを大量に生成する
  7. 初心者でも分かる!エクセルVBAでグラフを操作し取り扱うための超基本の第一歩
  8. エクセルVBAでグラフの元となるデータ範囲を次々と変更するプログラム
  9. 簡単!エクセルVBAでシート上のグラフをコピーしてPowerPointにペーストする
  10. エクセルVBAでグラフのデータ範囲を変更しながらPowerPointに連続して貼り付ける
  11. エクセルVBAでグラフタイトルを変更する方法とChartTitleについて
  12. エクセルVBAでグラフの軸の最大値・最小値や軸タイトルを設定する方法

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