ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Export chart to PowerPoint (https://www.excelbanter.com/excel-programming/423925-export-chart-powerpoint.html)

Henk

Export chart to PowerPoint
 
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.SlideInd ex)

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.



joel

Export chart to PowerPoint
 
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


"Henk" wrote:

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.SlideInd ex)

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.




All times are GMT +1. The time now is 03:23 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com