Supercharge your PowerPoint productivity with
Supercharge your PPT Productivity with PPTools - Click here to learn more.

Proud member of

PPTools

Image Export converts PowerPoint slides to high-quality images.

PPT2HTML exports HTML even from PowerPoint 2010 and 2013, gives you full control of PowerPoint HTML output, helps meet Section 508 accessibility requirements

Merge Excel data into PowerPoint presentations to create certificates, awards presentations, personalized presentations and more

Resize your presentations quickly and without distortion

Language Selector switches the text in your presentation from one language to another

FixLinks prevents broken links when you distribute PowerPoint presentations

Shape Styles brings styles to PowerPoint. Apply complex formatting with a single click.

Create a subset of an existing presentation

Problem

You have a list of slide numbers; you want to create a new presentation that includes JUST these slides, not any of the others.

Solution

Sub DeleteAllButListedSlides(sSlideString as String, sSaveAs as String)
' This sub will create a new copy of the current presentation then
' delete all but the listed slides
'
' sSlideString is a list of slide numbers, e.g.  "1, 2, 4, 9, 10, 11"    
' sSaveAs is the full path to the file you want to save new presentation to
'
' Because it uses Split, it only works in PPT 2000 or higher

    Dim x As Long
    Dim lSlideNumber As Long
    Dim rayKeep() As String
    Dim bKeeper As Boolean
    Dim oPres as Presentation

    ' kill the spaces in sSlideString, if any
    sSlideString = Replace(sSlideString, " ", "")

    ' split the string into an array
    rayKeep() = Split(sSlideString, ",")

    Set oPres = ActivePresentation.SaveAs(sSaveAs)

    With oPres
        For lSlideNumber = .Slides.Count To 1 Step -1
            For x = LBound(rayKeep) To UBound(rayKeep)
                If .Slides(lSlideNumber).SlideIndex = CLng(rayKeep(x)) Then
                    '.Slides(lSlideNumber).Delete
                    bKeeper = True
                End If
            Next

            If Not bKeeper Then
                .Slides(lSlideNumber).Delete
            End If
            bKeeper = False

        Next
    End With

    ' if you wish, close the presentation with oPres.Close

End Sub

See How do I use VBA code in PowerPoint? to learn how to use this example code.


Did this solve your problem? If so, please consider supporting the PPT FAQ with a small PayPal donation.
Page copy protected against web site content infringement by Copyscape Contents © 1995 - 2022 Stephen Rindsberg, Rindsberg Photography, Inc. and members of the MS PowerPoint MVP team. You may link to this page but any form of unauthorized reproduction of this page's contents is expressly forbidden.

Supercharge your PPT Productivity with PPTools

content authoring & site maintenance by
Friday, the automatic faq maker (logo)
Friday - The Automatic FAQ Maker

Create a subset of an existing presentation
http://www.pptfaq.com/FAQ00938_Create_a_subset_of_an_existing_presentation.htm
Last update 07 June, 2011
Created: