{"id":3088,"date":"2016-03-19T10:34:13","date_gmt":"2016-03-19T10:34:13","guid":{"rendered":"http:\/\/www.ericwhite.com\/home2\/bm8qcmjy\/public_html\/blog\/?page_id=3088"},"modified":"2016-03-19T10:36:46","modified_gmt":"2016-03-19T10:36:46","slug":"merging-powerpoint-presentations","status":"publish","type":"page","link":"https:\/\/www.ericwhite.com\/blog\/merging-powerpoint-presentations\/","title":{"rendered":"Merging PowerPoint Presentations"},"content":{"rendered":"<div class=\"post-content user-defined-markup\">\n<p class=\"MsoNormal\"><span><font face=\"Tahoma\"><\/font><\/span>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><font face=\"Tahoma\">This article will show you how to programmatically merge PowerPoint 2010 presentations into one using Open XML, Open XML SDK 2 and Visual Studio 2010.<\/font><\/span><\/p>\n<p class=\"MsoNormal\"><span><\/span>&nbsp;<\/p>\n<p class=\"MsoNormal\"><span><\/span><font size=\"2\" face=\"Tahoma\">We have 3 PowerPoint 2010 presentations containing a calendar for each year from year 2011 to 2013 respectively.<span>&nbsp; <\/span>We\u2019re going to merge them in to one presentation using a template.<\/font><\/p>\n<p class=\"MsoNormal\">&nbsp;<\/p>\n<p class=\"MsoNormal\"><b><font face=\"Tahoma\"><font size=\"2\">Create a Windows Forms Application Project:<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Fire up Visual Studio 2010.<span>&nbsp; <\/span>Click on <b>File-&gt;New-&gt;Project<\/b><\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Select <b>Visual C#-&gt; Windows<\/b> and select the <b>Windows Forms Application<\/b> template<\/font><\/font><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT1.PNG-521x360.png\"><font face=\"Tahoma\"><font size=\"2\"><span><span><\/span><\/span><\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Set the name of the presentation to <b>PowerPointPresentationMerger<\/b> and select a desired location for the solution.<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><b><font face=\"Tahoma\"><font size=\"2\">Design the Form:<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Drag a button on the form as seen in the image below with the following properties:<br \/><\/font><\/font><font size=\"2\" face=\"Tahoma\">Name:&nbsp;buttonMerge<br \/><\/font><font size=\"2\" face=\"Tahoma\">Text: Merge<\/font><o:p><font size=\"2\" face=\"Tahoma\">&nbsp;<br \/><\/font><\/o:p><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT2.PNG-261x224.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Drag 2 openFileDialog and 1 saveFileDialog on the form<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT3.PNG-261x224.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoNormal\"><font size=\"2\" face=\"Tahoma\">Set the properties of the controls:<\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>openFileDialog1:<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Name: openFileDialogPresentations<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>MultiSelect: true<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Filter: PowerPoint Presentation|*.pptx<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>openFileDialog2:<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Name: openFileDialogTemplate<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Filter: PowerPoint Presentation|*.pptx<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>saveFileDialog1:<\/font><\/font><\/p>\n<p class=\"MsoNormal\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Name: saveFileDialog<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Drag 3 more buttons on the form<br \/><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT4.PNG-261x224.png\">&nbsp;<\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font size=\"2\" face=\"Tahoma\">Set the properties of the controls:<\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>button1:<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Name: buttonPresentations<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Text: Presentations to Merge<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>button2:<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Name: buttonTemplate<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Text: Template to Use<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>button3:<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Name: buttonMergedOutput<\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span>Text: Merged Presentation<\/p>\n<p><\/font><\/font><span><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT5.PNG-261x224.png\"><\/font><\/span><\/p>\n<p class=\"MsoNormal\"><b><font face=\"Tahoma\"><font size=\"2\">Create Events for the Controls<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Double click buttonPresentations and enter the code below:<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT6.PNG-475x78.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Double click buttonTemplate and enter the code below:<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT7.PNG-445x77.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Double click buttonMergedOutput and enter the code<span>&nbsp; <\/span>below:<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT8.PNG-471x82.png\"><br \/><\/font><\/o:p><\/p>\n<p class=\"MsoNormal\"><b><font face=\"Tahoma\"><font size=\"2\">Add Reference to Open XML Assemblies<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Right click <b>PowerPointPresentationMerger <\/b>project and select <b>Add Reference<br \/><\/b><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT9.PNG-254x347.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>In the .NET tab, hold the crtl key and select <b>DocumentFormat.OpenXml <\/b>and <b>WindowsBase <\/b>then click <b>OK.<br \/><\/b><\/font><\/font><span><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT10.PNG-485x240.png\"><br \/><\/span><\/p>\n<p class=\"MsoNormal\"><o:p><font size=\"2\" face=\"Tahoma\">&nbsp;<\/font><\/o:p><\/p>\n<p class=\"MsoNormal\"><b><font face=\"Tahoma\"><font size=\"2\">Add the code for Open XML<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>In the form add the additional using statements<br \/><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT11.PNG-318x239.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create a variable to hold the unique id for both the slide master and the slide layout.<span>&nbsp; <\/span>Name the variable as uniqueId;<br \/><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT12.PNG-557x78.png\"><\/font><\/o:p>&nbsp;<\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create the <b>GetMaxSlideMasterId <\/b>method.<span>&nbsp; <\/span>This method will return the Slide Master Id.<span>&nbsp; <\/span>Note that Slide Master Ids should be greater than or equal to 2147483648.<span>&nbsp; <\/span>This method loops through the elements of the Slide Master Id List and checks whether the child id is greater than the defined max Id.<br \/><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT13.PNG-611x272.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create the <b>GetMaxSlideId <\/b>method.<span>&nbsp; <\/span>This method will return the Slide Id.<span>&nbsp; <\/span>Note that Slide Ids have a minimum value of greater than or equal to 256 and a maximum value of less than and a maximum value of less than 2147483648.<span>&nbsp; <\/span>Ids more than 2147483648, represents Slide Master Ids.<br \/><\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font size=\"2\" face=\"Tahoma\">This method loops through the elements of the Slide Id List and checks whether the child id is greater than the defined max Id.<br \/><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT14.PNG-558x299.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>5.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create the<span>&nbsp; <\/span><b>FixSlideLayoutIds <\/b><span>&nbsp;<\/span>method.<span>&nbsp; <\/span>This method will ensure that each slide layouts inside the Slide Master Part in each Presentation Part will have a unique id. These ids must be unique to identify each layout from one another.<br \/><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT15.PNG-606x226.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>6.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create <b>FormatErrors <\/b>method.<span>&nbsp; <\/span>This method generates a string of error messages that will be used to display in a Message box.<span>&nbsp;&nbsp; <\/span>This loops through all items in the enumerable ValidationErrorInfo.<span>&nbsp; <\/span>These errors are generated when the Open XML Validator calls the validate method.<br \/><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT16.PNG-509x267.png\"><br \/><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpLast\"><font face=\"Tahoma\"><font size=\"2\"><span><span>7.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create the <b>MergePresentationSlides <\/b>method.<span>&nbsp;&nbsp; <\/span>This method merges 1 PowerPoint Presentation to another.<span>&nbsp;&nbsp; <\/span>It does it by opening the destination PowerPoint as editable and checks if it has an existing Slide Id List.<span>&nbsp; <\/span>If it doesn\u2019t the code will create one.<br \/><\/font><\/font><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT17.PNG-618x199.png\"><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"2\" face=\"Tahoma\">While the destination PowerPoint presentation is open, we open the source PowerPoint presentation<\/p>\n<p><\/font><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT18.PNG-580x118.png\"><\/font><\/p>\n<p class=\"MsoNormal\"><font size=\"2\" face=\"Tahoma\">With both PowerPoint presentations open, we loop through each through each Slide Id list of the presentation in the Presentation part of the Source PowerPoint.<span>&nbsp; <\/span>We then copy these parts and create new relations in to the destination PowerPoint presentation. Note that we have to get the Max Slide Master Id and the Max Slide Id before the foreach statement as this will be used to generate the incremental Ids for the new slide master id and slide id. The <b>GetMaxSlideMasterId<\/b> and <b>GetMaxSlideId <\/b>are called to ensure that we always get the last id and incrementing it by one to ensure that all the Ids for the Master Slide Id and Slide Id are unique.<\/p>\n<p><\/font><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT19.PNG-538x480.png\"><\/font><\/p>\n<p class=\"MsoNormal\"><a href=\"\/photos\/sample\/images\/110465\/original.aspx\" target=\"_blank\" class=\"broken_link\"><\/a>&nbsp;<\/p>\n<p class=\"MsoNormal\"><font size=\"2\" face=\"Tahoma\">Next we make sure that all Slide Ids are unique in the destination PowerPoint presentation by calling the <b>FixSlideLayoutIds<\/b> method. Once everything is hunky-dory we now save the destination PowerPoint Presentation.<\/font><\/p>\n<p class=\"MsoNormal\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT20.PNG-433x127.png\"><\/p>\n<p class=\"MsoNormal\"><span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>8.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create click event for <b>buttonMerge<\/b>.<span>&nbsp; <\/span>Double click <b>buttonMerge. <\/b><span>&nbsp;<\/span>Add the variables below to capture the user\u2019s new merged PowerPoint presentation, the user\u2019s selected PowerPoint presentation to merge and the selected template to use.<br \/><\/font><\/font><span><span><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT21.PNG-543x95.png\"><\/font><\/span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>9.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Create a copy of the template presentation to generate the new presentation.<br \/><\/font><\/font><o:p><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT22.PNG-601x58.png\"><br \/><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>10.<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Loop through each selected source PowerPoint presentations and call the <b>MergePresentationSlides <\/b>method<br \/><\/font><\/font><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT23.PNG-624x100.png\"><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><span><\/span><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>11.<span>&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Open the merged<span>&nbsp; <\/span>PowerPoint presentation and validate the contents and display appropriate error messages<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT24.PNG-594x268.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoNormal\"><b><font face=\"Tahoma\"><font size=\"2\">Running the Code<o:p><\/o:p><\/font><\/font><\/b><\/p>\n<p class=\"MsoListParagraphCxSpFirst\"><font face=\"Tahoma\"><font size=\"2\"><span><span>1.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Hit <b>F5<\/b><\/font><\/font><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>2.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Click on <strong>Presentations to Merge<\/strong> button<\/font><\/font><o:p><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT25.PNG-402x347.png\"><br \/><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>3.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Inside the <b>PresentationToMerge<\/b> folder which is found the solution directory, select all presentations and click<strong> Open<\/strong><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT26.PNG-611x410.png\"><br \/><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>4.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Click on <b>Template to Use<\/b> button<\/font><\/font><o:p><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT27.PNG-404x348.png\"><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>5.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Inside the <b>TemplateToUse <\/b>which is found the solution directory, select all <b>Template.pptx<\/b> and click <b>Open<\/b><\/font><\/font><b><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"\nhttps:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT28.PNG-607x409.png\"><br \/><\/font><\/o:p><\/b><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>6.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Click on the <b>Merge Presentation<\/b> button<br \/><\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT29.PNG-407x349.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>7.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Select a location for the merge presentation and give it a name that ends with .pptx and click on the <b>Save<\/b> button<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT30.PNG-607x410.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>8.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>Click on the <b>Merge <\/b>button<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT31.PNG-403x348.png\"><br \/><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>9.<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <\/span><\/span><\/span>When there are no errors you will receive the following pop-up. Open the merged presentation.<\/font><\/font><o:p><font size=\"2\" face=\"Tahoma\"><br \/><img decoding=\"async\" border=\"0\" src=\"https:\/\/www.ericwhite.com\/blog\/wp-content\/uploads\/2016\/03\/MergePPT32.PNG-491x161.png\"><\/font><\/o:p><\/p>\n<p class=\"MsoListParagraphCxSpMiddle\"><font face=\"Tahoma\"><font size=\"2\"><span><span>10.<span>&nbsp;&nbsp; &nbsp; <\/span><\/span><\/span>Open the merged PowerPoint presentation to see that all 3 PowerPoint presentations are merged in to one.<\/font><\/font><\/p>\n<div style=\"clear:both;\"><\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; This article will show you how to programmatically merge PowerPoint 2010 presentations into one using Open XML, Open XML SDK 2 and Visual Studio 2010. &nbsp; We have 3 PowerPoint 2010 presentations containing a calendar for each year from year 2011 to 2013 respectively.&nbsp; We\u2019re going to merge them in to one presentation using [&hellip;]<\/p>\n","protected":false},"author":10567,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_bbp_topic_count":0,"_bbp_reply_count":0,"_bbp_total_topic_count":0,"_bbp_total_reply_count":0,"_bbp_voice_count":0,"_bbp_anonymous_reply_count":0,"_bbp_topic_count_hidden":0,"_bbp_reply_count_hidden":0,"_bbp_forum_subforum_count":0,"_s2mail":"","footnotes":""},"class_list":["post-3088","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/3088","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/users\/10567"}],"replies":[{"embeddable":true,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/comments?post=3088"}],"version-history":[{"count":2,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/3088\/revisions"}],"predecessor-version":[{"id":3091,"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/pages\/3088\/revisions\/3091"}],"wp:attachment":[{"href":"https:\/\/www.ericwhite.com\/blog\/wp-json\/wp\/v2\/media?parent=3088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}