みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
エクセルVBAでPowerPointを操作する方法についてシリーズでお伝えしています。
前回、以下の記事ででPowerPointスライド上の要素(シェイプと言います)のインデックス番号を取得することができました。
これでようやくPowerPointスライドのテキストボックスなどのオブジェクトのテキストを変更したり、コピペしたり削除したりの操作ができる地盤が整いました。
ということで、シェイプの操作の初級編として、エクセルVBAからPowerPointスライド上のテキストボックスの文字を入力する方法についてお伝えしていきます。
お題のPowerPointスライドとシェイプのインデックス番号
まずお題とするPowerPointスライドですが、ひとまずこちらです。
この「タイトル」という文字が入力されているテキストボックスの文字を入力していきたいと思います。
ちなみに、前回の記事で紹介したインデックス番号の取得プログラムの実行結果は
Shapes(2) Slide Number Placeholder 2
Shapes(3) TextBox 4
Shapes(4) Oval 3
Shapes(5) Right Arrow 5
Shapes(6) Cloud Callout 6
ということで、目的のシェイプのインデックス番号は”3″ということになります。
特定のシェイプのテキストを入力する
では早速、お目当てのシェイプのテキストを入力してみましょう。インデックス番号がわかればこちらのものなんです。
特定のインデックス番号のシェイプのテキストの入力方法はこちらになります。
Textなんちゃらのオブジェクトがいっぱい連なっていて、くどいように感じますが
- TextFrameオブジェクト:Shapeオブジェクト内のテキストボックス(フォントの種類やサイズ
- TextRangeオブジェクト:テキストボックスのテキスト入力範囲
- Textプロパティ:テキスト入力範囲内のテキスト
という区別になります。
それぞれのオブジェクトに対するメソッドやプロパティがたっぷり用意されているのですが、都度欲しいときに調べればOKと思います。
ちなみにですが、この場合はTextプロパティを省略して
としても同じ結果が得られますので、こちらも覚えておくと良いと思います。
シェイプにテキストを入力するプログラム
では例として以下プログラムを実行してみましょう。
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ページ目のスライドをセット
ppSld.Shapes(3).TextFrame.TextRange.Text = "タイトルを変更してみた"
'ppApp.Quit
'Set ppApp = Nothing
End Sub
このプログラムを実行しますと
このように、目的のテキストボックスのテキストが「タイトルを変更してみた」に書き換わりましたね。
とても良いのではないかと思います。
まとめ
以上、エクセルVBAでPowerPointの特定のシェイプについてテキストの内容を入力する方法についてお伝えしました。
シェイプの種類はたくさんありますが、インデックス番号がわかれば、だいたい同じように操作することができます。
今回はテキストボックスに対して文字入力を行いましたが、円や四角などのオブジェクトに文字入力をする場合も同じように実行可能です。
ぜひ試して頂ければと思います。
さて、次回はPowerPointスライドを複製する方法についてお伝えしますね。
どうぞお楽しみに!
連載目次:エクセル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でグラフの軸の最大値・最小値や軸タイトルを設定する方法
コメント
さきほどの件ですが、shape()の数を1から増やして、あたりをつけてEXCELの値を代入できるようになりました。あとはページを増やしながら次のセルを代入していきます。助かりました。ありがとうございました。