如何在 Power Point 中通过 VBA "Refresh Data"?
How to "Refresh Data" via VBA in Power Point?
到目前为止,我已经尝试了 Chart.Refresh 和 Chart.Update 以及 ChartData.UpdateLinks 都不起作用。
我的问题与这个类似,只是这段代码不适用于我的 ppt
How to update excel embedded charts in powerpoint?
如果我可以像 Excel 那样录制宏,步骤将是:
Select 图表
图表工具 > 刷新数据
这是我设法编写的代码,但它在“gChart.Application.RefreshData”处失败:
Sub refreshchart()
Dim ppApp As PowerPoint.Application, sld As Slide
Dim s As PowerPoint.Shape
Dim gChart As Chart, i As Integer
ppApp.Visible = True
i = 3
Set sld = ActivePresentation.Slides(i)
sld.Select
For Each s In ActivePresentation.Slides(i)
If s.Type = msoEmbeddedOLEObject Then
Set gChart = s.OLEFormat.Object
With gChart.Application
gChart.Application.Refresh
Set gChart = Nothing
End If
Next s
End Sub
整数 i 从 i=1 到 73,但作为测试,我使用的是幻灯片 3。并非所有幻灯片都有图表,但大多数幻灯片都有 4 个图表(73 张中的 65 张)。
这可能有帮助,它打开和关闭嵌入的 Excel 对象
For Each s In ActivePresentation.Slides(i)
If s.Type = msoEmbeddedOLEObject Then
s.Select 'select the object
s.OLEFormat.Activate 'Activate it (like 2x click))
ActiveWindow.Selection.Unselect 'To let it close
ActiveWindow.View.GotoSlide s.Slideindex 'make current slide active
End If
Next s
此代码有效。但它只有在两个文件都打开时才有效(excel 如果它只有一个):Power Point 和带有数据的 Excel。它实际上是一张一张地刷新所有图表。
Sub updatelinks()
Dim sld As Slide, shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
On Error Resume Next
shp.LinkFormat.Update
Next
Next
MsgBox ("Graficos actualizados con éxito")
End Sub
因此,如果 Excel 位于共享位置,代码将无法运行,因为检索数据需要花费太多时间。我仍在寻找一种方法来做到这一点。谢谢!
我稍微更改了代码,有了这个小改动,图表的刷新又自动进行了。
很多时候,如果您分享您的 excel ppt 组合,链接会断开,并且在恢复它们后自动图表刷新不起作用。
有了 downstanding 宏,自动刷新将再次起作用:
Sub REFRESH()
Dim pptChart As Chart
Dim pptChartData As ChartData
Dim pptWorkbook As Object
Dim sld As Slide
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasChart Then
Set pptChart = shp.Chart
Set pptChartData = pptChart.ChartData
pptChartData.Activate
shp.Chart.REFRESH
On Error Resume Next
On Error GoTo 0
End If
Next
Next
Set pptWorkbook = Nothing
Set pptChartData = Nothing
Set pptChart = Nothing
End Sub
下面的代码位于 Excel 工作簿的宏中,该工作簿还包含源数据。不确定代码是否与 PowerPoint 中的代码相同 运行。我只需打开我的 Excel 工作簿,然后让它为我更新 PowerPoint。
我一直在寻找这个问题的答案,并最终通过大量阅读和反复试验设法让它发挥作用。我的问题是我有一个 PowerPoint,其中有很多图表是使用 CTRL+C 和 CTRL+V 创建的,因此其中 none 个是链接的。
这就是我让它工作的方式:
Dim myPresentation As PowerPoint.Presentation
Dim sld As PowerPoint.Slide
Dim shp As PowerPoint.Shape
Dim myChart As PowerPoint.Chart
For Each sld In myPresentation.Slides
For Each shp In sld.Shapes
If shp.HasChart Then
Set myChart = shp.Chart
myChart.ChartData.Activate
myChart.Refresh
End If
Next
Next
我不知道那里是否有不必要的代码,但我很高兴我终于让它工作了,所以我不再碰它了。
到目前为止,我已经尝试了 Chart.Refresh 和 Chart.Update 以及 ChartData.UpdateLinks 都不起作用。 我的问题与这个类似,只是这段代码不适用于我的 ppt How to update excel embedded charts in powerpoint?
如果我可以像 Excel 那样录制宏,步骤将是:
Select 图表
图表工具 > 刷新数据
这是我设法编写的代码,但它在“gChart.Application.RefreshData”处失败:
Sub refreshchart()
Dim ppApp As PowerPoint.Application, sld As Slide
Dim s As PowerPoint.Shape
Dim gChart As Chart, i As Integer
ppApp.Visible = True
i = 3
Set sld = ActivePresentation.Slides(i)
sld.Select
For Each s In ActivePresentation.Slides(i)
If s.Type = msoEmbeddedOLEObject Then
Set gChart = s.OLEFormat.Object
With gChart.Application
gChart.Application.Refresh
Set gChart = Nothing
End If
Next s
End Sub
整数 i 从 i=1 到 73,但作为测试,我使用的是幻灯片 3。并非所有幻灯片都有图表,但大多数幻灯片都有 4 个图表(73 张中的 65 张)。
这可能有帮助,它打开和关闭嵌入的 Excel 对象
For Each s In ActivePresentation.Slides(i)
If s.Type = msoEmbeddedOLEObject Then
s.Select 'select the object
s.OLEFormat.Activate 'Activate it (like 2x click))
ActiveWindow.Selection.Unselect 'To let it close
ActiveWindow.View.GotoSlide s.Slideindex 'make current slide active
End If
Next s
此代码有效。但它只有在两个文件都打开时才有效(excel 如果它只有一个):Power Point 和带有数据的 Excel。它实际上是一张一张地刷新所有图表。
Sub updatelinks()
Dim sld As Slide, shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
On Error Resume Next
shp.LinkFormat.Update
Next
Next
MsgBox ("Graficos actualizados con éxito")
End Sub
因此,如果 Excel 位于共享位置,代码将无法运行,因为检索数据需要花费太多时间。我仍在寻找一种方法来做到这一点。谢谢!
我稍微更改了代码,有了这个小改动,图表的刷新又自动进行了。
很多时候,如果您分享您的 excel ppt 组合,链接会断开,并且在恢复它们后自动图表刷新不起作用。
有了 downstanding 宏,自动刷新将再次起作用:
Sub REFRESH()
Dim pptChart As Chart
Dim pptChartData As ChartData
Dim pptWorkbook As Object
Dim sld As Slide
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasChart Then
Set pptChart = shp.Chart
Set pptChartData = pptChart.ChartData
pptChartData.Activate
shp.Chart.REFRESH
On Error Resume Next
On Error GoTo 0
End If
Next
Next
Set pptWorkbook = Nothing
Set pptChartData = Nothing
Set pptChart = Nothing
End Sub
下面的代码位于 Excel 工作簿的宏中,该工作簿还包含源数据。不确定代码是否与 PowerPoint 中的代码相同 运行。我只需打开我的 Excel 工作簿,然后让它为我更新 PowerPoint。
我一直在寻找这个问题的答案,并最终通过大量阅读和反复试验设法让它发挥作用。我的问题是我有一个 PowerPoint,其中有很多图表是使用 CTRL+C 和 CTRL+V 创建的,因此其中 none 个是链接的。 这就是我让它工作的方式:
Dim myPresentation As PowerPoint.Presentation
Dim sld As PowerPoint.Slide
Dim shp As PowerPoint.Shape
Dim myChart As PowerPoint.Chart
For Each sld In myPresentation.Slides
For Each shp In sld.Shapes
If shp.HasChart Then
Set myChart = shp.Chart
myChart.ChartData.Activate
myChart.Refresh
End If
Next
Next
我不知道那里是否有不必要的代码,但我很高兴我终于让它工作了,所以我不再碰它了。