アプリ版:「スタンプのみでお礼する」機能のリリースについて

Powerpointファイルを開いて、
ホーム-配置-オブジェクトの選択と表示 でスライドのShapeオブジェクト一覧が表示されます。(添付画像参照)。このスライドから黄色い蛍光ペンで塗った、”コンテンツプレースホルダー2”の
Shapeオブジェクトを削除しようとして、下記のPowerpointVBAを実行しましたが、何も削除されません。コードをどう直せば動きますか? わかる方教えてください。

--<start of code>----
Sub delete()
Dim s As Shape 'sはshapeオブジェクトを入れる変数
Dim c As Collection 'cはコレクション
Dim start_slide As Integer 'start_slideはスライド番号1を入れる定数
Dim i As Integer 'iはスライド番号を入れる変数

start_slide = 1
For i = start_slide To ActivePresentation.Slides.Count
'If i = 254 Then
' GoTo continue
'End If
Set c = New Collection
For Each s In ActivePresentation.Slides(i).Shapes '変数sにアクティブスライド番号のすべてのshapeオブジェクトを入れる。
c.Add s
Next
For Each s In c
If InStr(s.Title, "コンテンツ") > 0 Then s.delete '★ここが重要!
Next
'continue:
Next
'MsgBox "the process is finished."
End Sub
--<end of code>----

「PowerpointVBAで指定のSha」の質問画像

A 回答 (2件)

>If InStr(s.Title, "コンテンツ") > 0 Then s.delete '★ここが重要!



の「Title」を「Name」にするとどうでしょうか。

If InStr(s.Name, "コンテンツ") > 0 Then s.delete '★ここが重要!
    • good
    • 7
この回答へのお礼

If InStr(s.Name, "コンテンツ") > 0 Then s.delete '★ここが重要!
でうまく行きました。ありがとうございます。

お礼日時:2019/12/25 15:00

>”コンテンツプレースホルダー2”のShapeオブジェクトを削除しようとして


>For Each s In ActivePresentation.Slides(i).Shapes '変数sにアクティブスライド番号のすべてのshapeオブジェクトを入れる。
>If InStr(s.Title, "コンテンツ") > 0 Then s.delete '★ここが重要!

全角表示を取得する方法は不明ですけど、とりあえずプレスホルダー名を取得しその結果としては。

Dim sl As Slide
Dim sh As Shape

For Each sl In ActivePresentation.Slides
For Each sh In sl.Shapes.Placeholders

Debug.Print sh.Name, ": " & InStr(sh.Name, "Placeholder 2")

Next
Next

結果:
Title 1 : 0
Subtitle 2 : 0
Title 1 : 0
Content Placeholder 2 : 9
Content Placeholder 3 : 0

みたいになりますね。
多分コントロール名だと思いますけど、半角文字が使われているようです。

と、ほぼPowerPointを使わないのでその先は良くわかりません。
WordVBAやっている方ならいけるんじゃないのかな?
    • good
    • 0

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

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