Copy Selected Slides Into New PowerPoint Presentation
What This VBA Code Does
Sometimes I have a huge PowerPoint deck filled with data slides from all sorts of departments. When I need a few slides updated from a particular department, I never want to send them the entire presentation. I just want to send them their particular slides. This macro will take whatever slides you have currently selected and copies them into a brand new PowerPoint presentation. So all you have to do is Email the new presentation out. Enjoy!
Sub Copy_Selection_To_New_PPT() 'PURPOSE: Copies selected slides and pastes them into a brand new presentation file 'SOURCE: www.TheSpreadsheetGuru.com Dim NewPPT As Presentation Dim OldPPT As Presentation Dim Selected_slds As SlideRange Dim Old_sld As Slide Dim New_sld As Slide Dim Swap As Variant Dim x As Long, y As Long Dim myArray() As Long Dim SortTest As Boolean 'Set variable to Active Presentation Set OldPPT = ActivePresentation 'Set variable equal to only selected slides in Active Presentation Set Selected_slds = ActiveWindow.Selection.SlideRange 'Sort Selected slides via SlideIndex 'Fill an array with SlideIndex numbers ReDim myArray(1 To Selected_slds.Count) For y = LBound(myArray) To UBound(myArray) myArray(y) = Selected_slds(y).SlideIndex Next y 'Sort SlideIndex array Do SortTest = False For y = LBound(myArray) To UBound(myArray) - 1 If myArray(y) > myArray(y + 1) Then Swap = myArray(y) myArray(y) = myArray(y + 1) myArray(y + 1) = Swap SortTest = True End If Next y Loop Until Not SortTest 'Set variable equal to only selected slides in Active Presentation (in numerical order) Set Selected_slds = OldPPT.Slides.Range(myArray) 'Create a brand new PowerPoint presentation Set NewPPT = Presentations.Add 'Align Page Setup NewPPT.PageSetup.SlideHeight = OldPPT.PageSetup.SlideHeight NewPPT.PageSetup.SlideOrientation = OldPPT.PageSetup.SlideOrientation NewPPT.PageSetup.SlideSize = OldPPT.PageSetup.SlideSize NewPPT.PageSetup.SlideWidth = OldPPT.PageSetup.SlideWidth 'Loop through slides in SlideRange For x = 1 To Selected_slds.Count 'Set variable to a specific slide Set Old_sld = Selected_slds(x) 'Copy Old Slide y = Old_sld.SlideIndex Old_sld.Copy 'Paste Slide in new PowerPoint NewPPT.Slides.Paste Set New_sld = Application.ActiveWindow.View.Slide 'Bring over slides design New_sld.Design = Old_sld.Design 'Bring over slides custom color formatting New_sld.ColorScheme = Old_sld.ColorScheme 'Bring over whether or not slide follows Master Slide Layout (True/False) New_sld.FollowMasterBackground = Old_sld.FollowMasterBackground Next x End Sub
Using VBA Code Found On The Internet
Now that you’ve found some VBA code that could potentially solve your Excel automation problem, what do you do with it? If you don’t necessarily want to learn how to code VBA and are just looking for the fastest way to implement this code into your spreadsheet, I wrote an article (with video) that explains how to get the VBA code you’ve found running on your spreadsheet.
Getting Started Automating Excel
Are you new to VBA and not sure where to begin? Check out my quickstart guide to learning VBA. This article won’t overwhelm you with fancy coding jargon, as it provides you with a simplistic and straightforward approach to the basic things I wish I knew when trying to teach myself how to automate tasks in Excel with VBA Macros.
Also, if you haven’t checked out Excel’s latest automation feature called Power Query, I have put together a beginner’s guide for automating with Excel’s Power Query feature as well! This little-known built-in Excel feature allows you to merge and clean data automatically with little to no coding!
How Do I Modify This To Fit My Specific Needs?
Chances are this post did not give you the exact answer you were looking for. We all have different situations and it’s impossible to account for every particular need one might have. That’s why I want to share with you: My Guide to Getting the Solution to your Problems FAST! In this article, I explain the best strategies I have come up with over the years to get quick answers to complex problems in Excel, PowerPoint, VBA, you name it!
I highly recommend that you check this guide out before asking me or anyone else in the comments section to solve your specific problem. I can guarantee that 9 times out of 10, one of my strategies will get you the answer(s) you are needing faster than it will take me to get back to you with a possible solution. I try my best to help everyone out, but sometimes I don’t have time to fit everyone’s questions in (there never seem to be quite enough hours in the day!).
I wish you the best of luck and I hope this tutorial gets you heading in the right direction!
After 10+ years of creating macros and developing add-ins, I've compiled all the hacks I wish I had known years ago!
Copy & Paste Multiple Excel Tables Into Microsoft Word With VBA
Moving Excel Tables Into Various Word Pages This post is an add-on to a previous post I wrote covering how...
VBA To Copy/Paste Excel Table Into Microsoft Word
Moving An Excel Table Into A New Word Document In this post you will learn how to write VBA code...
Chris is a finance professional and Excel MVP recognized by Microsoft since 2016. With his expertise, he founded TheSpreadsheetGuru blog to help fellow Excel users, where he shares his vast creative solutions & expertise. In addition, he has developed over 7 widely-used Excel Add-ins that have been embraced by individuals and companies worldwide.