Sub CopyPowerPointTest()
'Open PowerPoint but do not open the destination file
Dim oPowerPoint As New PowerPoint.Application
Dim appPPT As PowerPoint.Application
Dim pptPres As Presentation
Dim pptSlide As Slide
Dim ch As Chart
Dim aChtObj As ChartObject
Dim SlideCount As Long
'Create a new Presentation and add title slide
Set pptPres = oPowerPoint.Presentations.Add
With pptPres.Slides
Set pptSlide = .Add(.Count + 1, ppLayoutTitleOnly)
pptSlide.Shapes.Title.TextFrame.TextRange.Text = "mmol_75's chart copy test"
pptPres.SaveCopyAs (ThisWorkbook.Path & "\mmol_75Test.ppt")
'Reference existing instance of PowerPoint
Set appPPT = GetObject(, "Powerpoint.Application.11")
'Reference active presentation
Set pptPres = appPPT.ActivePresentation
appPPT.ActiveWindow.ViewType = ppViewSlide
'Place each chart sheet in a slide
For Each ch In ThisWorkbook.Charts
ch.CopyPicture Appearance:=xlScreen, Format:=xlPicture, Size:=xlScreen
'Add a new slide
SlideCount = pptPres.Slides.Count
Set pptSlide = pptPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
appPPT.ActiveWindow.View.GotoSlide pptSlide.SlideIndex
'paste and select the chart picture
pptSlide.Shapes.Paste.Select
'align the chart
appPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, msoTrue
appPPT.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, msoTrue
appPPT.ActiveWindow.Selection.SlideRange.Shapes.AddLabel(msoTextOrientationHorizontal, 300, 20, 500, 50).Select
appPPT.ActiveWindow.Selection.ShapeRange.TextFrame.WordWrap = msoFalse
With appPPT.ActiveWindow.Selection.ShapeRange.TextFrame.TextRange
.Characters(Start:=1, Length:=0).Select
.Text = "This is " & ch.Name
With .Font
.Name = "Arial"
.Size = 12
.Bold = msoTrue
.AutoRotateNumbers = msoFalse
.Color.SchemeColor = ppForeground
End With
End With
Next ch
End With
'Clean up
Set oPowerPoint = Nothing
Set pptSlide = Nothing
Set pptPres = Nothing
Set appPPT = Nothing
End Sub