View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
[email protected] gleepwurptheeyebiter@gmail.com is offline
external usenet poster
 
Posts: 4
Default Pasting an excel Chart into a specific area in Powerpoint

Hello!

So I'm having this problem. The problem is probably that I am not that
strong with VBA, but here goes:

I want to automate creation of charts and put them into a powerpoint
deck. There are 100 charts that need to be created on a monthly
basis. I am working on an engine to do this.

I am stuck trying to copy a chart from excel and paste it into a
specific place on a specific powerpoint slide.
The pasting is going OK, but what I really want to do is to paste it
into a specific spot on the slide so that I can maintain the format of
the slide if I apply a style template to the presentation.

Here is an example:
http://www.qaready.com/ppt/example.ppt

There are 2 slides. The first one is wrong because the chart I pasted
into it is floating. The second one is right because I selected the
graph shape object, then pasted the chart into it. The question is,
how do I do this from VBA (in Excel).

See below: 'HERE IS WHERE THINGS GO AWRY



Here is my code that does not work:



Sub CopyChartToPres(PPApp As PowerPoint.Application, PPPres As
PowerPoint.Presentation, PPSlide As PowerPoint.Slide, EXChart As
Chart)
' Uses Early Binding to the PowerPoint Object Model
' Set a VBE reference to Microsoft PowerPoint Object Library

' Make sure a chart is selected
If ActiveChart Is Nothing Then
MsgBox "Please select a chart and try again.", vbExclamation, _
"No Chart Selected"
Else
' Reference existing instance of PowerPoint
' Set PPApp = GetObject(, "Powerpoint.Application") commented
' Reference active presentation


' Copy chart as a picture
EXChart.CopyPicture Appearance:=xlScreen, Size:=xlScreen, _
Format:=xlPicture

' Set PPPres = PPApp.ActivePresentation
PPPres.Application.Activate

PPApp.ActiveWindow.ViewType = ppViewSlide

' Paste chart
'PPSlide.Shapes.Paste.Select

PPSlide.Select

PPSlide.Shapes.Paste


' Clean up
Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing
End If

End Sub


Thenks in advance,

Gleep