
photo credit: collect.more.love via photopin (license)
みなさん、こんにちは!
タカハシ(@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スライドを複製する方法についてお伝えしますね。
どうぞお楽しみに!