如何使用 VBA 更改 PowerPoint 中图表的默认数据?

How do you change the default data of a chart in PowerPoint with VBA?

我想创建一个簇状柱形图并将其添加到 PowerPoint 幻灯片中。我不想在 Excel 中创建该图,然后使用 PowerPoint.Slide.Shapes.PasteSpecial 方法复制它。我可以毫无问题地创建图表,并在一定程度上与之交互(例如,我可以禁用图例,请参阅代码)。但是,我不知道如何编辑图表引用的数据。

Private Sub AddGraph()

' Create a new slide
Dim PowerPointApplication As PowerPoint.Application
Set PowerPointApplication = New PowerPoint.Application

Dim Presentation As PowerPoint.Presentation
Set Presentation = PowerPointApplication.Presentations(1)

Dim Slide As PowerPoint.Slide
Set Slide = Presentation.Slides.Add(Presentation.Slides.Count + 1, ppLayoutText)

' Remove the existing shape 2
Slide.Shapes(2).Delete

' Add the chart
Slide.Shapes.AddChart _
    Type:=xlColumnClustered

With Slide.Shapes(2).Chart

    .Legend.Delete

    ' Try to edit some of the default data of the cluster column chart
    ' This causes a Subscript out of Range error 
    WorkBooks("Chart in Microsoft PowerPoint").Cells(2,1) = 2021
    
End With

End Sub

当 PowerPoint 创建图表时,它似乎还创建了一个临时的(?)Excel 工作簿来存储数据。我试图访问该工作簿以像这样编辑默认数据 WorkBooks("Chart in Microsoft PowerPoint").Cells(2,1) = 2021 例如,但这会引发下标超出范围错误。

有没有办法编辑在 PowerPoint 中创建图表时创建的 Excel 工作簿?我是否在没有结果的道路上走得太远;有没有更简单的方法来完成这项工作(不包括在 Excel 工作簿中创建所有内容,然后将该图表复制到 PowerPoint 演示文稿)?

ChartData 是缺少的 link。以下是更改工作表值的典型代码:

With Slide.Shapes(2).Chart
    With .ChartData
        .Activate
        strText = .Workbook.Worksheets(1).Range("B2").Value
        strText = Replace(strText, "4.3", "5.2")
        .Workbook.Worksheets(1).Range("B2").Value = strText
        .Workbook.Close
    End With
End With