0

PowerpointVBAで下記のコードを作成しました。目的はPowerpointスライドの画像全削除と線の全削除です。

下記のコードの画像全削除と線の全削除のどちらかをコメントアウトすると、コメントアウトされていない方の削除は機能しますが、両方を活かすと、両方とも機能しません。

おそらく、s.Type にスライド1ページ分のshapeオブジェクトコレクションが入っているため、例えば、s.Type に入っている画像オブジェクトを削除すると、同じページの線オブジェクトも一緒にs.Type から消えてしまうため、線が削除できないのではないかと推定しています。

Powerpointスライドの画像全削除と線の全削除を下記のコードで実現するには、どうコードを修正すれば良いか、

わかる方、御指南をお願いします。

---<Start of Code>-----

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

    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

       
'画像は全削除
         If s.Type = msoPicture Then
               s.delete
          End If
'線は全削除
         If s.Type = msoLine Then
              s.delete
          End If
       Next

'continue:
Next
   'MsgBox "the process is finished."
End Sub

---<End of Code>-----

gorby5775 質問の投稿
回答とコメントは、会員登録(無料)で閲覧できるようになります。