Article ID: 163195
Article Last Modified on 10/11/2006
Sub AppendSlides()
Dim lCurrentView As Long
' Object reference to presentations.
Dim oDestPres As Presentation
Dim oSourcePres As Presentation
Dim oPossiblePres() As Presentation
Dim oPresObject As Presentation
' Used to build the message box.
Dim strPrompt As String
Dim strTitle As String
' Variables for the assistant.
Dim Ball As Balloon
Dim Count As Long
Dim lResult As Long
' Determine which view the active presentation is using.
lCurrentView = ActiveWindow.ViewType
' Check if PowerPoint is in Slide Sorter view.
If lCurrentView <> ppViewSlideSorter And _
lCurrentView <> ppViewSlide Then
' Create the prompt for the error message.
strPrompt = "You must be in Slide Sorter or Slide view to run " _
& "this macro. Please switch to one of these views and run " _
& "the macro again."
' Create the title for the error message.
strTitle = "Wrong View Type"
' Display the message box.
MsgBox strPrompt, vbExclamation, strTitle
' End the macro.
End
End If
' Check if more than one presentation is open.
If PowerPoint.Presentations.Count = 1 Then
' Only one presentation is open.
' Create the prompt for the error message.
strPrompt = "You only have one presentation open. " _
& "Please open a destination presentation and run " _
& "the macro again. "
' Create the title for the error message.
strTitle = "One Presentation Open"
' Display the message box.
MsgBox strPrompt, vbExclamation, strTitle
' End the macro.
End
End If
' Check if two presentations are open.
If PowerPoint.Presentations.Count = 2 Then
' Determine which presentation is the destination.
' This algorithm uses the presentation that is not active
' as the destination.
If Presentations(1).Name <> ActivePresentation.Name Then
' The destination is presentations(1).
Set oDestPres = Presentations(1)
Set oSourcePres = Presentations(2)
Else
' The destination is presentations(2).
Set oDestPres = Presentations(2)
Set oSourcePres = Presentations(1)
End If
End If
' Check if more than two presentations are open in PowerPoint.
If PowerPoint.Presentations.Count > 2 Then
' Create the balloon for the assistant.
Set Ball = Assistant.NewBalloon
With Ball
' Set up the heading and text.
.Heading = "Select a Presentation"
.Text = "Which Presentation would you like to use as the " _
& "destination?"
' Sets the BalloonType Property.
.BalloonType = msoBalloonTypeButtons
' Make the balloon modal (this is the default).
.Mode = msoModeModal
' Add a Cancel button to the balloon (OK is default).
.Button = msoButtonSetCancel
End With
For Each oPresObject In PowerPoint.Presentations
If ActivePresentation.Name = oPresObject.Name Then
Set oSourcePres = oPresObject
Else
' Increment the counter.
Count = Count + 1
' Change the size of the array.
ReDim Preserve oPossiblePres(1 To Count)
' Add an object reference to the array.
Set oPossiblePres(Count) = oPresObject
' Assign presentation name to a balloon label.
Ball.Labels(Count).Text = oPresObject.Name
End If
Next oPresObject
' Display the assistant.
If Assistant.Visible = False Then
Assistant.Visible = True
End If
' Display the assistant greeting.
Assistant.Animation = msoAnimationGreeting
' Display the balloon.
lResult = Ball.Show
' End the macro if the Cancel button was hit.
If lResult = -vbCancel Then
End
End If
' Set up the destination.
Set oDestPres = oPossiblePres(lResult)
End If
' Copy the slide and paste to the end of the destination
' presentation.
If oSourcePres.Windows(1).ViewType = ppViewSlide Then
' Copy the slide.
With oSourcePres.Windows(1).Selection.SlideRange
oSourcePres.Slides(.SlideNumber).Copy
End With
' Check if destination presentation is using slide sorter view.
If oDestPres.Windows(1).ViewType = ppViewSlideSorter Then
oDestPres.Windows(1).View.Paste
MsgBox "Sucessfully pasted slide.", vbInformation
Else
' Create the message text for the message box.
strPrompt = "The destination must be Slide Sorter view. " _
& "Switch to Slide Sorter View?"
strTitle = "Change to Slide Sorter"
' Ask the user to switch to slide sorter.
lResult = MsgBox(strPrompt, vbExclamation + vbOKCancel, _
strTitle)
If lResult = vbOK Then
' Paste the slide.
oDestPres.Windows(1).ViewType = ppViewSlideSorter
oDestPres.Windows(1).View.Paste
MsgBox "Sucessfully pasted slide.", vbInformation
Else
' Cancel button was selected.
strPrompt = "No changes have been made to the presentation."
strTitle = "No Changes Made"
MsgBox strPrompt, vbInformation, strTitle
End
End If
End If
Else
' The source presentation is not in slide view.
strPrompt = "The source presentation is not in slide view. " _
& "Please switch the active presentation to Slide View and" _
& " run the macro again."
strTitle = "Wrong View"
MsgBox strPrompt, vbExclamation, strTitle
End If
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 ppt8 vba vbe macppt mac_ppt ppt98 powerpt
Keywords: kbcode kbdtacode kbhowto kbmacro kbprogramming KB163195