Excel 更改PowerPoint中图表的数据范围

Excel 更改PowerPoint中图表的数据范围,excel,vba,powerpoint-2010,Excel,Vba,Powerpoint 2010,我有一个包含数据和图表的Excel文件。我创建了一个宏来读取文本文件,并根据excel文件中的日期更新数据和图表数据范围。数据范围将从文本文件中日期的前5天开始,直至日期 这在Excel中非常有效,但现在我希望宏能够打开我已经创建的PowerPoint文件,其中包含链接到Excel文件的两个图表,并在PowerPoint演示文稿中更改Excel图表的数据范围 我可以打开PowerPoint并按名称选择图形,但无法更改数据范围 这是我目前正在使用的代码,它不工作,但也没有抛出任何错误 打开Powe

我有一个包含数据和图表的Excel文件。我创建了一个宏来读取文本文件,并根据excel文件中的日期更新数据和图表数据范围。数据范围将从文本文件中日期的前5天开始,直至日期

这在Excel中非常有效,但现在我希望宏能够打开我已经创建的PowerPoint文件,其中包含链接到Excel文件的两个图表,并在PowerPoint演示文稿中更改Excel图表的数据范围

我可以打开PowerPoint并按名称选择图形,但无法更改数据范围

这是我目前正在使用的代码,它不工作,但也没有抛出任何错误

打开PowerPoint并将全局oPPT变量设置为打开的演示文稿

Public Sub Open_PowerPoint_Presentation()
'Opens a PowerPoint Document from Excel

Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True

Set oPPTFile = objPPT.Presentations.Open(FileName:=ActiveWorkbook.Path & "\DailyHealthCheck.pptx")
End Sub 
调用上面的例程,更改某些标签上的日期,然后尝试更改Excel的源数据

' open the gd metrics power point, must be manually closed later
Open_PowerPoint_Presentation

' set the dates in the ppt slide to the current date
oPPTFile.Slides(1).Shapes("Low Left Date").TextFrame.TextRange.Text = Format(Now, "MMMM d, yyyy")
oPPTFile.Slides(1).Shapes("Critical Issues Table").Table.Cell(1, 1).Shape.TextFrame.TextRange.Text = "Grid Director Critical Issues (as of " & Format(Now, "M/d") & ")"

' change the date ranges of the chart
If ppdRangeStr <> "" Then
    Dim splitDateRange() As String
    splitDateRange = Split(ppdRangeStr, ":")
    ppdRangeStr = "='process per day'!$" & Left(splitDateRange(0), 1) & "$" & Right(splitDateRange(0), Len(splitDateRange(0)) - 1) & ":$" & Left(splitDateRange(1), 1) & "$" & Right(splitDateRange(1), Len(splitDateRange(1)) - 1)
    MsgBox ppdRangeStr
    oPPTFile.Slides(1).Shapes("Processed Per Day Chart").Chart.SetSourceData Source:=ppdRangeStr, PlotBy:=xlColumns
    ' reset data labels

    oPPTFile.Slides(1).Shapes("Processed Per Day Chart").LinkFormat.Update

End If   
”打开gd metrics电源点,以后必须手动关闭
打开\u PowerPoint\u演示文稿
'将ppt幻灯片中的日期设置为当前日期
oPPTFile.Slides(1).Shapes(“左下日期”).TextFrame.TextRange.Text=格式(现在是“MMMM d,yyyy”)
oPPTFile.Slides(1).Shapes(“关键问题表”).Table.Cell(1,1).Shape.TextFrame.TextRange.Text=“网格控制器关键问题(自”&格式(现在为“M/d”)&”)
'更改图表的日期范围
如果是ppdRangeStr“”,则
Dim splitDateRange()作为字符串
splitDateRange=Split(ppdRangeStr,“:”)
ppdRangeStr=“='process per day'!$”&左(splitDateRange(0),1)和“$”&右(splitDateRange(0),Len(splitDateRange(0))-1)和“:$”&左(splitDateRange(1),1)和“$”&右(splitDateRange(1),Len(splitDateRange(1))-1)
MsgBox ppdRangeStr
oPPTFile.Slides(1).Shapes(“每天处理的图表”).Chart.SetSourceData源:=ppdRangeStr,绘图者:=xlColumns
'重置数据标签
oPPTFile.Slides(1).形状(“每天处理的图表”).LinkFormat.Update
如果结束
字符串ppdRangeStr是“'processed per day'!$H77:$G81”,这与Excel文件中的图表(有效)使用的范围相同


是否有人知道如何使Excel文件中的宏更改Excel文件中源数据所在PowerPoint中Excel图表的源数据?(如果有意义?

如果PowerPoint中的图表是Excel图表的链接图表,您必须更改Excel图表的源数据,然后在PowerPoint中更新链接图表的链接格式。我已更新了图表的链接格式,但没有更新范围。粘贴选项“使用目标主题和链接数据(L)”与粘贴特殊->粘贴链接之间有什么区别?“粘贴链接”选项将在没有vba的情况下更新图表,但在PowerPoint中调整图表大小时会扭曲文本。如果只有图表的数据链接到Excel,则在
oPPTFile.Slides(1).形状(“每天处理的图表”).chart.ChartData.激活
oPPTFile.Slides(1).形状(“每天处理的图表”)之前的
.Chart.SetSourceData源:=ppdRangeStr,绘图者:=xlColumns