Supercharge your PowerPoint productivity with

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

Tell me about PPTools

Create a subset of an existing presentation


PPTools
Shape Styles brings the power of styles to PowerPoint. Apply complex formatting with a single click
Merge Excel, CSV or tab-delimited data into PowerPoint presentations to create certificates, awards presentations, personalized presentations and more
FixLinks prevents broken links when you distribute PowerPoint presentations
Optimizer saves disk space and bandwidth, shrinks your PowerPoint presentations to the right size for email, screenshow or printing
PPT2HTML gives you full control of PowerPoint HTML output, helps meet Section 508 accessibility requirements
Prep4PDF preserves interactivity in PowerPoint presentations when you convert to PDF
Image Export converts PowerPoint slides to JPG, PNG, GIF, WMF and more

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.


Page copy protected against web site content infringement by Copyscape Contents © 1995-2008 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.

Español    Deutsch    Français    Português    Italiano    Nederlands    Greek    Japanese    Korean    Chinese



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.htm
Last update 03 May, 2008