Microsoft provides programming examples for illustration only, without warranty either expressed or implied. This includes, but is not limited to, the implied warranties of merchantability or fitness for a particular purpose. This article assumes that you are familiar with the programming language that is being demonstrated and with the tools that are used to create and to debug procedures. Microsoft support engineers can help explain the functionality of a particular procedure, but they will not modify these examples to provide added functionality or construct procedures to meet your specific requirements.
Sample Code
This sample assumes the following:
- An existing Excel workbook.
- A range of cells, with labels for both data series and categories.
- A PowerPoint presentation called "Presentation1.ppt", which is saved in the My Documents folder.
- Presentation1.ppt has one slide with a title and an existing graph.
- The range of cells in the Excel workbook is the same size as the range of cells in the existing Graph datasheet.
Sub UpdateGraph()
Dim oPPTApp As PowerPoint.Application
Dim oPPTShape As PowerPoint.Shape
Dim rngNewRange As Excel.Range
Dim oGraph As Object
'
' Set oPPTApp to PowerPoint by creating a new instance of PowerPoint.
' If PowerPoint is already open, you would instead use the GetObject
' method instead.
'
Set oPPTApp = CreateObject("PowerPoint.Application")
'
' Set PowerPoint to be Visible.
'
oPPTApp.Visible = msoTrue
'
' Open Presentation1.ppt from My Documents.
'
oPPTApp.Presentations.Open "C:\My Documents\Presentation1.ppt"
'
' Set rngNewRange to the collection of cells in the active Excel
' workbook and active sheet.
'
Set rngNewRange = ActiveSheet.Range("A1:F4")
'
' Select the range then copy it.
'
rngNewRange.Select
rngNewRange.Copy
'
' On slide one of Presentation1.ppt, loop through each shape.
'
With oPPTApp.ActivePresentation.Slides(1)
For Each oPPTShape in .Shapes
'
' Check to see whether shape is an OLE object.
'
If oPPTShape.Type = msoEmbeddedOLEObject Then
'
' Check to see whether OLE object is a Graph 2000 object. The ProgID
' is case sensitive.
'
If oPPTShape.OLEFormat.ProgID = "MSGraph.Chart.8" Then
'
' Set oGraph to the Graph object on the slide.
'
Set oGraph = oPPTShape.OLEFormat.Object
'
' Paste the cell range into the upper leftmost cell of the graph
' datasheet. This position is designated "00" (two zeros). To designate
' a range to start in the second row, first column, you would use "01".
' Likewise first row, second column is "A0". This will also link the
' datasheet to the Excel Workbook cell range. If you do not want to
' link to the Workbook, just omit the word "True". The default
' choice for the Paste method is "False".
'
oGraph.Application.DataSheet.Range("00").Paste True
End If
End If
'
' Select the next shape on the slide.
'
Next oPPTShape
End With
End Sub