Search code examples
vbapowerpointpowerpoint-2010

vba: powerpoint macro: "variable not set"


I'm getting a "Object variable or With block variable not set" error in my code. This is my first crack at macro writing. I do have programming knowledge but this is new to me.

Anyway, I want to go through the presentation, and for every page that has any text in the notes section, I want to add a new slide (following it) containing that text.

Here's what I tried:

Sub SlideSort()
Dim curSlide As Slide
Dim newSld As Slide
Dim curPres As Presentation
Dim curShape As Shape
Dim i As Integer

    For i = 1 To ActivePresentation.Slides.Count
        curSlide = ActivePresentation.Slides(i)

        For Each curShape In curSlide.NotesPage.Shapes
            If curShape.Type = msoPlaceholder Then
                If curShape.PlaceholderFormat.Type = ppPlaceholderBody Then
                    If curShape.TextFrame.TextRange <> "" Then
                        Set newSld = ActivePresentation.Slides.Add(Index:=i + 1, Layout:=ppLayoutText)
                        newSld.Shapes(2).TextFrame.TextRange = curShape.TextFrame.TextRange
                        i = i + 1

                    End If
                End If
            End If
        Next curShape
    Next i

End Sub

The line that gives the error is curSlide = ActivePresentation.Slides(i)


Solution

  • Use Set curSlide = ActivePresentation.Slides(i) - it's an object, and should be operated via Set.