Article ID: 176525
Article Last Modified on 10/11/2006
Sub CopyPaste()
' Declare variables.
Dim intCount As Long
Dim intLoop As Long
' Returns the number of slides in the damaged presentation.
intCount = ActivePresentation.Slides.Count
' Creates new, blank presentation named "Newfile". Then
' adds a new blank slide in the first index position.
Presentations.Add.SaveAs "Newfile"
Presentations("Newfile").Slides.Add 1, ppLayoutBlank
' Loops through count of slides.
For intLoop = 1 To intCount
' After creating the new presentation, the damaged
' presentation automatically becomes the second window
' index item in the PowerPoint window. This line of
' code switches to the damaged presentation.
Windows.Item(2).Activate
ActiveWindow.View.GotoSlide (intLoop)
' Selects and copies objects on active slide.
ActiveWindow.Selection.SlideRange.Shapes.SelectAll
ActiveWindow.Selection.Copy
' After switching to the new presentation, the index
' position of the two presentations swaps, so to go
' back to the new presentation, you must go to the second
' index position in the windows item list.
Windows.Item(2).Activate
ActiveWindow.View.GotoSlide (intLoop)
' Pastes objects to active slide in new presentation.
ActiveWindow.View.Paste
' Adds new, blank slide to new presentation if there are
' more slides to process.
If intLoop < intCount Then
Presentations("Newfile").Slides.Add intLoop + 1, ppLayoutBlank
End If
Next intLoop
' Tells user that operation has completed.
MsgBox "Operation Complete!"
End Sub
176476 OFF: Office Assistant Not Answering Visual Basic Questions
163435 VBA: Programming Resources for Visual Basic for Applications
Additional query words: 8.00 kbmacro ppt8 vba vbe ppt97 macppt mac_ppt mppt98 98 powerpt ppt98 mppt8 broken corrupted damage trashed
Keywords: kbcode kbdtacode kbhowto kbprogramming KB176525