Note that there are some explanatory texts on larger screens.

plurals
  1. POCreating a powerpoint with multiple charts on each slide from excel using vba
    text
    copied!<p>I currently have a working code that takes each chart from my excel spreadsheet and creates a PowerPoint presentation that puts all of my charts on the same slide. I would like the macro to put four (4) charts on each slide but I am having trouble, any help is appreciated.(note- I haven't adjusted the size of the charts once they are in PowerPoint, I will handle this after I get 4 in each slide) My current code is as seen below</p> <pre><code> Private Sub CommandButton17_Click() 'Add a reference to the Microsoft PowerPoint Library by: '1. Go to Tools in the VBA menu '2. Click on Reference '3. Scroll down to Microsoft PowerPoint X.0 Object Library, check the box, and press Okay 'keep button in same location Set btn = ActiveSheet.Shapes("CommandButton17") With btn btLeft = .Left btTop = .Top End With 'First we declare the variables we will be using Dim newPowerPoint As PowerPoint.Application Dim activeSlide As PowerPoint.Slide Dim cht As Excel.ChartObject 'Look for existing instance On Error Resume Next Set newPowerPoint = GetObject(, "PowerPoint.Application") On Error GoTo 0 'Let's create a new PowerPoint If newPowerPoint Is Nothing Then Set newPowerPoint = New PowerPoint.Application End If 'Make a presentation in PowerPoint If newPowerPoint.Presentations.Count = 0 Then newPowerPoint.Presentations.Add End If 'Show the PowerPoint newPowerPoint.Visible = True ' newPowerPoint.ActivePresentation.ApplyTemplate _ ' "D:\Documents and Settings\austin.plantz\Desktop\Misc Projects\CSA PP Theme.thmx" 'Loop through each chart in the Excel worksheet and paste them into the PowerPoint For i = 1 To ActiveSheet.ChartObjects.Count Set cht = ActiveSheet.ChartObjects(i) ' With ActivePresentation.SlideMaster ' .CustomLayouts.Add (1) ' .CustomLayouts(1).Name = "Title And Content" ' End With 'Add a new slide where we will paste the chart If i - 1 Mod 4 = 0 Then newPowerPoint.ActivePresentation.Slides.Add newPowerPoint.ActivePresentation.Slides.Count + 1, ppLayoutTitle End If newPowerPoint.ActiveWindow.View.GotoSlide newPowerPoint.ActivePresentation.Slides.Count Set activeSlide = newPowerPoint.ActivePresentation.Slides(newPowerPoint.ActivePresentation.Slides.Count) 'Copy the chart and paste it into the PowerPoint as a Metafile Picture cht.Select ActiveChart.ChartArea.Copy activeSlide.Shapes.PasteSpecial(DataType:=ppPasteMetafilePicture).Select 'Set the title of the slide the same as the title of the chart 'activeSlide.Shapes(1).TextFrame.TextRange.Text = cht.Chart.ChartTitle.Text 'Adjust the positioning of the Chart on Powerpoint Slide newPowerPoint.ActiveWindow.Selection.ShapeRange.Left = 165 newPowerPoint.ActiveWindow.Selection.ShapeRange.Top = 150 newPowerPoint.ActiveWindow.Selection.ShapeRange.Width = 400 activeSlide.Shapes(2).Width = 200 activeSlide.Shapes(2).Left = 505 activeSlide.Shapes(1).Top = 25 Next AppActivate ("Microsoft PowerPoint") Set activeSlide = Nothing Set newPowerPoint = Nothing End Sub </code></pre>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload