Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » テキストボックスをまとめて作成するPowerPointマクロ

テキストボックスをまとめて作成するPowerPointマクロ

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013

「powerpoint vba テキストボックスの挿入」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

テキストボックスを挿入・作成するPowerPoint VBA(Visual Basic for Applications)のコードを探している方による検索です。

この検索だけでは詳細がわかりませんので、参考になりそうなマクロをご紹介しておきましょう。

[スポンサードリンク]

テキストボックスをまとめて作成するサンプルマクロ

複数のスライドにテキストボックスを一括作成するマクロです。

すべてのスライドに同じ文字を表示するテキストボックスを作成したいのなら、もちろん、個々のスライドに作成するのではなくマスターを利用すべきです。

ですから今回は、全スライドではなく、アクティブなスライドから後ろのスライドに、まとめてテキストボックスを挿入するマクロにしました。

Sub テキストボックスをまとめて作成する()

 Dim n As Long
 Dim i As Long
 Dim txt As Shape

 If MsgBox("アクティブスライドから後ろのスライドにテキストボックスを挿入しますか?", vbYesNo) = vbNo Then Exit Sub

 n = ActiveWindow.Selection.SlideRange.SlideIndex

 With ActivePresentation
 For i = n To .Slides.Count

  Set txt = .Slides(i).Shapes.AddTextbox( _
   Orientation:=msoTextOrientationHorizontal, _
   Left:=0, _
   Top:=0, _
   Width:=250, _
   Height:=10)

  With txt
   .Name = "AddedTextBox"
   .TextFrame.TextRange = "サンプル"
   .TextEffect.FontSize = 20
  End With

 Next i
 End With

End Sub

上記のマクロを実行すると、
「アクティブスライドから後ろのスライドにテキストボックスを挿入しますか?」
とメッセージが表示され[はい]ボタンを押すと、一気にテキストボックスが挿入されます。

サンプルマクロの解説

変数・nにアクティブなスライドのスライド番号を格納しておいてから、
 n = ActiveWindow.Selection.SlideRange.SlideIndex

アクティブなプレゼンテーションファイルの、アクティブスライドから後ろのスライドにループ処理を開始します。
 With ActivePresentation
 For i = n To .Slides.Count

横幅250ポイント、高さ30ポイントの横書きのテキストボックスを、スライドの左上に挿入して、Shape型のオブジェクト変数・txtに格納します。
  Set txt = .Slides(i).Shapes.AddTextbox( _
   Orientation:=msoTextOrientationHorizontal, _
   Left:=0, _
   Top:=0, _
   Width:=250, _
   Height:=30)

ここが、
「powerpoint vba テキストボックスの挿入」
という検索をした方の一番知りたかった部分でしょうか。

ShapesコレクションオブジェクトのAddTextboxメソッドで、

テキストボックスをまとめて作成するPowerPointマクロ

テキストボックスを挿入することができます。

Shapes.AddTextboxメソッドで指定する引数Orientation・Left・Top・Width・Heightは、名前から何を指定しているかわかるでしょう。Left・Top・Width・Heightの単位はポイントです。

テキストボックスを挿入後、その挿入したテキストボックスに「サンプル」という文字列を書き出し、フォントサイズを20ポイントに設定して、名前を「AddedTextBox」に設定しています。
  With txt
   .TextFrame.TextRange = "サンプル"
   .TextEffect.FontSize = 20
   .Name = "AddedTextBox"
  End With

名前は設定しなくてもいいといえばいいのですが、このマクロで作成したテキストボックスをまとめてマクロで削除したいという要望が出ることを考えると、名前を付けておくほうが便利なので、Nameプロパティで名前を指定しています。

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » テキストボックスをまとめて作成するPowerPointマクロ

「TextFrame・TextRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.