2017-06-26 3 views
-1

で活躍スライドを削除するが、私はsld_id = ActiveWindow.Selection.SlideRange.SlideIndexVBA私はアクティブなパワーポイントプレゼンテーションのスライドを削除しようとしていますパワーポイント

Sub DEL() 
    Dim i As Long 
    Dim sld_id As Long 
    sld_id = ActiveWindow.Selection.SlideRange.SlideIndex 
    With ActivePresentation.Slides 
    For i = .Count To sld_id Step -1 
     .Item(i).Delete 
    Next i 
    End With 
End Sub 

上のエラーを持っている誰もがそれで私を助けることができます? 多くの感謝! Roxana

+0

エラーとは何ですか? –

+0

質問を投稿する前にstackoverflowを検索してください。 –

答えて

2

以下のコードでは、PowerPointにレイトバインディングを使用しているので、PowerPointインスタンスが開いているかどうかを確認します(PowerPointライブラリへの参照を追加する必要はありません)。

その後、ActivePresentationppPresに設定します。

最後に、2番目のスライド(最初のスライドだけが残ります)まですべてのスライドを最後から後ろに削除するようにループします。

For i = ppPres.Slides.Count To 2 Step -1ループを必要に応じて簡単に変更できます。

コード

Option Explicit 

Sub DEL() 

Dim ppProgram As Object 
Dim ppPres As Object 
Dim ppSlide As Object 
Dim i As Long 

On Error Resume Next 
Set ppProgram = GetObject(, "PowerPoint.Application") 
On Error GoTo 0 

' check if PowerPoint instance is open >> if not raise an error 
If ppProgram Is Nothing Then 
    MsgBox "PowerPoint is closed!" 
    Exit Sub 
Else 
    ' set the ppPres object to active PowerPoint presentation 
    Set ppPres = ppProgram.ActivePresentation 

    ' always loop backwards when deleting objects (in this case slides) 
    For i = ppPres.Slides.Count To 2 Step -1 
     Set ppSlide = ppPres.Slides(i) 
     ppSlide.Delete    
    Next i 
End If 

End Sub 
+1

++ nice one ... 'ppPres.Slides(i).Delete'はそれをさらに短縮します:D –

+1

@SiddharthRout true、私はすべてのオブジェクトを定義して設定するのは自動ですね。 (あなた自身が月刊カレンダーを作ったのをごらんください) –

+0

ありがとうございました!他の投稿のVBAコードは私のために働いていませんでした。私はSet Pre = ActivePresentationの行にもエラーがありました。 –

関連する問題