Reply
 
LinkBack Thread Tools Search this Thread Display Modes
  #1   Report Post  
 
Posts: n/a
Default Charts in each sheet to Powerpoint

Hi everybody,

I have created an Excel file with multiple charts, each of them is on a
single sheet. I'm trying to create a macro to copy each slide, paste it
on a powerpoint slide, get to the next sheet, to copy the slide, paste
it on the next powerpoint slide, and so on till the end.

Here's the code. I'm stuck when I try to copy the chart.
Does anyone know a simple way to achieve that ?

Thanks

Sub GraphPowerpoint()


Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer

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

Set PPPres = PPApp.Presentations.Add(msoTrue)
Set PPSlide = PPPres.Slides.Add(1, ppLayoutBlank)
PPApp.ActiveWindow.ViewType = ppViewSlide

For Each f In Worksheets

Sheets(f.Name).Activate
ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen,
Format:=xlPicture

SlideCount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
With PPSlide
.Shapes.Paste
End With

PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True

SlideCount = SlideCount + 1

Next

End Sub

  #2   Report Post  
Jon Peltier
 
Posts: n/a
Default

If the charts are each on their own chart sheet, not embedded on their
own worksheet, the following modifications should help.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services
Tutorials and Custom Solutions
http://PeltierTech.com/
_______


Sub GraphPowerpoint()

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer
Dim f As Object

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

Set PPPres = PPApp.Presentations.Add(msoTrue)
Set PPSlide = PPPres.Slides.Add(1, ppLayoutBlank)
PPApp.ActiveWindow.ViewType = ppViewSlide

For Each f In ActiveWorkbook.Charts

f.Activate
ActiveChart.CopyPicture Appearance:=xlScreen, _
Size:=xlScreen, Format:=xlPicture

SlideCount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
With PPSlide
.Shapes.Paste
End With

PPApp.ActiveWindow.Selection.ShapeRange.Align _
msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align _
msoAlignMiddles, True

SlideCount = SlideCount + 1

Next

End Sub


wrote:

Hi everybody,

I have created an Excel file with multiple charts, each of them is on a
single sheet. I'm trying to create a macro to copy each slide, paste it
on a powerpoint slide, get to the next sheet, to copy the slide, paste
it on the next powerpoint slide, and so on till the end.

Here's the code. I'm stuck when I try to copy the chart.
Does anyone know a simple way to achieve that ?

Thanks

Sub GraphPowerpoint()

  #3   Report Post  
 
Posts: n/a
Default

Thanks Jon. It works fine;;;except I have trouble with

PPApp.ActiveWindow.Selection.S=ADhapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True

It doesn't want to align the chart. I'm sure you know what I should do.
Thank you again.

  #4   Report Post  
Jon Peltier
 
Posts: n/a
Default

Is the chart selected?

This
PPApp.ActiveWindow.Selection.S*hapeRange.Align msoAlignCenters, True

can be replaced with this
PPApp.ActiveWindow.Selection.sliderange.Shapes.ran ge _
(ppapp.ActiveWindow.Selection.sliderange.Shapes.Co unt).align _
msoAlignCenters, True

Certainly it isn't shorter, but it might help. The PowerPoint object
model is not quite as intuitive as Excel's: no ActiveSlide object, for
example.

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services
Tutorials and Custom Solutions
http://PeltierTech.com/
_______


wrote:
Thanks Jon. It works fine;;;except I have trouble with

PPApp.ActiveWindow.Selection.S*hapeRange.Align msoAlignCenters, True
PPApp.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True

It doesn't want to align the chart. I'm sure you know what I should do.
Thank you again.

  #5   Report Post  
 
Posts: n/a
Default

Thanks Jon.
There must be something I don't get because it's not working fine.
Here's my code :

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer
Dim f As Object

Set PPApp =3D CreateObject("Powerpoint.Application")
PPApp.Visible =3D True

' Ins=E8re une nouvelle presentation.

Set PPPres =3D PPApp.Presentations.Add(msoTrue)
Set PPSlide =3D PPPres.Slides.Add(1, ppLayoutBlank)
PPApp.ActiveWindow.ViewType =3D ppViewSlide

' Copie le graphique en image

For Each f In ActiveWorkbook.Charts

Sheets(f.Name).Activate
ActiveChart.CopyPicture Appearance:=3DxlScreen, Size:=3DxlScreen,
Format:=3DxlPicture

SlideCount =3D PPPres.Slides.Count
Set PPSlide =3D PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
With PPSlide
.Shapes.Paste
End With


PPApp.ActiveWindow.Selection.SlideRange.Shapes.Ran ge(PPApp.ActiveWindow.Sel=
ection.SlideRange.Shapes.Count).Align
msoAlignCenters, True


SlideCount =3D SlideCount + 1
=20
Next

Can you tell me what's wrong ? Except ME !!
Thank you.



  #6   Report Post  
Jon Peltier
 
Posts: n/a
Default

I have noticed an error in what I posted earlier (sorry!), but the
following procedure works just fine:

Sub ChartSheetsToPowerPointSlides()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer
Dim f As Object

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

' Insère une nouvelle presentation.

Set PPPres = PPApp.Presentations.Add(msoTrue)
Set PPSlide = PPPres.Slides.Add(1, ppLayoutBlank)
PPApp.ActiveWindow.ViewType = ppViewSlide

' Copie le graphique en image

For Each f In ActiveWorkbook.Charts
' don't need to activate the slide
f.CopyPicture Appearance:=xlScreen, Size:=xlScreen, _
Format:=xlPicture

SlideCount = PPPres.Slides.Count
' insert new slide for each chart picture
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
With PPSlide
.Shapes.Paste
.Shapes.Range(.Shapes.Count).Align msoAlignCenters, True
.Shapes.Range(.Shapes.Count).Align msoAlignMiddles, True
End With

Next
End Sub

- Jon
-------
Jon Peltier, Microsoft Excel MVP
Peltier Technical Services
Tutorials and Custom Solutions
http://PeltierTech.com/
_______

wrote:

Thanks Jon.
There must be something I don't get because it's not working fine.
Here's my code :

Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim PresentationFileName As Variant
Dim SlideCount As Long
Dim iCht As Integer
Dim f As Object

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

' Insère une nouvelle presentation.

Set PPPres = PPApp.Presentations.Add(msoTrue)
Set PPSlide = PPPres.Slides.Add(1, ppLayoutBlank)
PPApp.ActiveWindow.ViewType = ppViewSlide

' Copie le graphique en image

For Each f In ActiveWorkbook.Charts

Sheets(f.Name).Activate
ActiveChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen,
Format:=xlPicture

SlideCount = PPPres.Slides.Count
Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
With PPSlide
.Shapes.Paste
End With


PPApp.ActiveWindow.Selection.SlideRange.Shapes.Ran ge(PPApp.ActiveWindow.Selection.SlideRange.Shapes. Count).Align
msoAlignCenters, True


SlideCount = SlideCount + 1

Next

Can you tell me what's wrong ? Except ME !!
Thank you.

  #7   Report Post  
 
Posts: n/a
Default

Many Thanks, Jon !! It works just fine and saves me time !
Thanks again for your precious help !

Reply
Thread Tools Search this Thread
Search this Thread:

Advanced Search
Display Modes

Posting Rules

Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
Charts in Sheet FLKULCHAR Excel Discussion (Misc queries) 0 May 22nd 05 08:59 PM
Charts in Sheet FLKULCHAR Excel Discussion (Misc queries) 0 May 5th 05 05:27 AM
Copying multiple sheets from one book 2 another and undertake spec Pank Mehta Excel Discussion (Misc queries) 14 March 16th 05 04:41 PM
Print multiple excel charts within one sheet to fit to a page lik. lal Excel Discussion (Misc queries) 1 February 18th 05 09:47 PM
Naming & renaming a sheet tab Cgbilliar Excel Worksheet Functions 1 November 7th 04 05:57 PM


All times are GMT +1. The time now is 02:01 PM.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright ©2004-2024 ExcelBanter.
The comments are property of their posters.
 

About Us

"It's about Microsoft Excel"