プロが教える店舗&オフィスのセキュリティ対策術

PowerPointで[表示]-[スライドマスター]で表示される中で
テキストボックスの中の文をVBAで編集したいのですが、
SlideMasterオブジェクトのプロパティが上手く設定できません。

Slide(1).Shapes.Item(0)とかでは編集できないようです。
テキストボックスそのものがスライドマスターじゃないと
編集できないオブジェクトみたいです。

どうやったらVBAで編集できるようになりますか?

ご存知の方、教えてください。

A 回答 (5件)

ふと、、スライドマスターのカスタムレイアウトのテキストを弄りたいと


言う事でしょうか?
Sub b()
With Application.ActivePresentation.SlideMaster.CustomLayouts(1)
.Shapes.Item(1).TextFrame.TextRange.Text = "TEST1"
.Shapes.Item(2).TextFrame.TextRange.Text = "TEST2"
End With
End Sub
レイアウト1ページ目に出力
(Item(1)、Item(2)、がどのオブジェクトを指しているかは、解りません。
Shape_Nameで出力した順番がインデックスです。上から1
名前が分かれば名前で指定した方が良いかと
    • good
    • 0

>オブジェクト名をdebug.printで出力しても出てきませんでした。


なるほど、、

一応、しつこいようですがシェイプの名前とタイプを出力できるコードを

① スライドマスター 
Sub SlideMaster_Shape_Name()
Dim shp
For Each shp In Application.ActivePresentation.SlideMaster.Shapes
Debug.Print shp.Name; "<=>Type = "; shp.Type
Next
End Sub
② カスタムレイアウト(インデックス1にあるシェイプ)
Sub CustomLay_Shape_Name()
Dim shp
For Each shp In Application.ActivePresentation.SlideMaster.CustomLayouts(1).Shapes
Debug.Print shp.Name; "<=>Type = "; shp.Type
Next
End Sub
③ 通常スライド(インデックス1にあるシェイプ)
Sub Slide_Shape_Name()
Dim shp
For Each shp In Application.ActivePresentation.Slides(1).Shapes
Debug.Print shp.Name; "<=>Type = "; shp.Type
Next
End Sub

画像で示してもらえると解る方が現れるかも、、
    • good
    • 0

付け忘れました。



テストしたPPTのスライドマスターの場合
イミディエイトへの出力結果
Title Placeholder 1
Text Placeholder 2
Date Placeholder 3
Footer Placeholder 4
Slide Number Placeholder 5
TextBox 6
    • good
    • 0
この回答へのお礼

回答ありがとうございます。別の質問で解決しました。

お礼日時:2022/01/18 18:23

#1です。

ダメでしたか、、、

テキストボックスとは何を指しているのでしょう?
テキストボックスのオブジェクト名は?

一応、試してみました 画像を貼っておきます。

テキストボックスはオブジェクトの指定方法を変えて名前で指定しています
ループと名前やタイプで特定して出力する方法もありかと思います。
オブジェクトがどのような名前になっているか調べる為

オブジェクト名取得プロシージャです。イミディエイトウィンドウに出力
Sub Shape_Name()
Dim shp
For Each shp In Application.ActivePresentation.SlideMaster.Shapes
Debug.Print shp.Name
Next
End Sub

Itemインデックスと名前で特定してテキストを書き込み(2つの方法)
(テキストボックスをスライドマスタにあらかじめ作成してください)

Sub a()
With Application.ActivePresentation.SlideMaster
.Shapes.Item(1).TextFrame.TextRange.Text = "TEST1"
.Shapes.Item(2).TextFrame.TextRange.Text = "TEST2"
.Shapes("TextBox 6").TextFrame.TextRange.Text = "テキストを変更"
End With
End Sub

TextBox 6 はイミディエイトウィンドウに出力されたオブジェクト名
「PowerPointVBAでスライドマス」の回答画像2
    • good
    • 0
この回答へのお礼

オブジェクト名をdebug.printで出力しても出てきませんでした。
Shapesオブジェクトではない?
因みにAutoShape、Rectangele、Lineでした。

お礼日時:2022/01/18 18:09

こんばんは


こんな感じでは?
Application.ActivePresentation.SlideMaster.Shapes.Item(1).TextFrame.TextRange.Text = "TEST"
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
Shapesでは操作できませんでした。

お礼日時:2022/01/18 07:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A