こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

アウトラインに表示されている文字 取得したいのです

アウトラインに表示されている文字(タイトル?)のみ取得したいのですが、

Dim sld As Slide
Dim shp As Shape
Sub test()

For Each sld In ActivePresentation.Slides
sld.Select

For Each shp In ActiveWindow.Selection.SlideRange.Shapes
Debug.Print shp.TextEffect.Text
Next shp

Next sld

End Sub

を実行すると、アウトラインだけではなく、
テキストボックスにあるすべての値まで取得してしまいます。

アウトラインのタイトル部分のみ表示される文字を取得するコードはありますか?

「クリックしてタイトルを入力」
「・クリックしてテキストを入力」
とスライドにデフォルトで表示されますが、
「クリックしてタイトルを入力」のみの値を取得したいです。

投稿日時 - 2015-02-14 09:33:31

QNo.8917228

暇なときに回答ください

質問者が選んだベストアンサー

すみません。
こちらで試した PPT の画像を添付しないで回答をしてしまったので、こちらに添付します。
試したバージョンはPowerPoint 2010 です。
プレースホルダ(何も入力していない際に表示されるテキストはEmptyとなってしまうので)、およびテキストボックスには文字を入力しています。

投稿日時 - 2015-02-16 23:54:31

ANo.2

このQ&Aは役に立ちましたか?

5人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.1

プレースホルダーなどには文字が入力されていないとEnptyとなって、識別ができず何も取得できないようです。

下記で試してみましたが、やりたいことと合っているか不明ですが参考になれば。

プレースホルダ、テキストボックスの値はTextEffect.text と TextFrame.TextRange.text のどちらでも取得できるようなので、取得したものを shape の Type で Placeholder かどうかで判別して、TextBox は無視するようにしてみました。

Sub TextBoxToDebugPrint()
Dim slide
Dim text1 As String, text2 As String
For Each slide In ActiveWindow.Parent.Slides
Dim shape
For Each shape In slide.Shapes
If shape.TextEffect.text <> "" Then
If shape.Type = msoPlaceholder Then
text1 = shape.TextEffect.text
text2 = shape.TextFrame.TextRange.text
Debug.Print text1, text2
End If
End If
Next
Next
End Sub
 

投稿日時 - 2015-02-16 23:46:11

お礼

ご回答ありがとうございます。

投稿日時 - 2015-03-14 14:01:02

あなたにオススメの質問