charts

Create a Chart using Excel data


I want to create a Chart using Excel data.

How can I do that?


Solution

  • Try

    Option Explicit
    
    Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongPtr)
    'Public xlApp As Excel.Application
    'Public xlBook As Excel.Workbook
    
    Public Sub Macro1()
        
        Dim xlApp, xlBook, i, arData, ws
        
        ' get Excel data
        Set xlApp = CreateObject("Excel.Application")
        xlApp.Visible = True
        Set xlBook = xlApp.Workbooks.Open(FileName:="Data.xlsx", ReadOnly:=True)
        arData = xlBook.sheets(1).Range("A1:B6")
        xlBook.Close False
        xlApp.Quit
        
        'Delete all Slides
        For i = ActivePresentation.Slides.Count To 1 Step -1
            ActivePresentation.Slides(i).Delete
        Next i
        
        'Add a blank slide
        Dim ppSlide As Slide, ppShape As Shape
        Set ppSlide = ActivePresentation.Slides.Add(ActivePresentation.Slides.Count + 1, ppLayoutBlank)
        
        'Add a Map Chart
        Set ppShape = ppSlide.Shapes.AddChart2(Style:=140, Type:=xlRegionMap, _
               Left:=0, Top:=0, Width:=960, Height:=540, NewLayout:=False)
        ppShape.Chart.Name = "myChart"
    
        ' wait for chartdata sheet
        On Error Resume Next
        Do
            DoEvents
            Sleep 1000
            Set ws = ppShape.Chart.ChartData.Workbook.sheets(1)
        Loop While IsEmpty(ws)
        On Error GoTo 0
        
        ' copy data into PP
        With ws
           .UsedRange.Clear
           .Range("A1").Resize(UBound(arData), UBound(arData, 2)) = arData
           ws.Parent.Close
        End With
        
        MsgBox "Complete"
    End Sub