Export chart to PowerPoint

H

Henk

I found some code here to export a chart from Excel to PowerPoint. What I
want it to do is to export the chart to a new slide at the end of the
presentation. now have to following code :

Public Sub ChartToPowerPoint()

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim NewIndex As Integer

Set PPApp = GetObject(, "Powerpoint.Application")
Set PPPres = PPApp.ActivePresentation
PPApp.ActiveWindow.ViewType = ppViewNormal

NewIndex = PPPres.Slides.Count + 1
PPPres.Slides.Add(Index:=NewIndex, Layout:=ppLayoutBlank).Select

PPPres.Slides(NewIndex).Select
Set PPSlide = PPPres.Slides
_(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)

ActiveSheet.ChartObjects("Graph01").Activate
ActiveChart.ChartArea.Select

ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen,
Format:=xlBitmap

PPSlide.Shapes.Paste.Select

PPApp.ActiveWindow.Selection.ShapeRange.Height = 303.5
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True

Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing

Exit Sub

End Sub


If there is no slide in the presentation, it works 1 time, 2 times, n times.

If there is 1 slide in the presentation it fails the first time (end macro)
and it works the second time and third time and n time.

If at some time I go to the PP presentation and select another slide
manually, and start the macro after that, it fails the first time, (end
macro) and it works the second time and third time and n time.

The error message that I get for "PPSlide.Shapes.Paste.Select" is :

Run-time error '-2147188160(80048240)':
Shape (unknown member) : Invalid request. To select a shape its view must be
active.

I can not find out why the shape (which is copied to the last slide of the
presentation, by the way) is not active at that moment. Neither can I find a
way to activate it.
 
J

Joel

Try these changes. I think part of your problem is where the SELECTION is
putting the focus. The macro may be getting confused betweeen the excel
application and the power point application. I eliminated the select. I
also used CreateObject rather than getObject.


Public Sub ChartToPowerPoint()

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim NewIndex As Integer

Set PPApp = CreateObject("Powerpoint.Application")
PPApp.Visible = True
Set PPPres = PPApp.Presentations.Add

NewIndex = PPPres.Slides.Count + 1
Set PPSlide = PPPres.Slides.Add(Index:=NewIndex, Layout:=ppLayoutBlank)

ActiveSheet.ChartObjects("Graph01").Activate
Set Chrt = ActiveChart.ChartArea

Chrt.CopyPicture _
Appearance:=xlScreen, _
Size:=xlScreen, _
Format:=xlBitmap

PPSlide.Shapes.Paste

PPApp.ActiveWindow.Selection.ShapeRange.Height = 303.5
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True

Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing

Exit Sub

End Sub
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads


Top