如何在powerpoint中更新excel嵌入式图表?

时间:2012-02-09 08:03:39

标签: powerpoint powerpoint-vba

我有30张图表是从excel创建的,并粘贴到powerpoint幻灯片上。每个月,我都必须通过手动点击图表和编辑来更新这30个嵌入式图表。

我知道有一个选项可以使用paste special,因此可以通过单击更新链接自动更新图表中的数据。但是,我的图表需要由一些用户编辑。粘贴特殊选项不允许用户编辑图表。因此,我无法使用此粘贴特殊选项。

我认为解决方案在于在powerpoint中编写vba。这里有专家可以编写这个vba代码,以便在powerpoint中更新所有图表吗?我目前正在使用powerpoint 2007.非常感谢您的帮助。

2 个答案:

答案 0 :(得分:14)

如果您需要编辑图表,那么显然您需要编辑基础Excel文件,或者能够在PowerPoint中编辑

当您使用PowerPoint2007时,它提供完整的Excel支持(与拥有数据表的PowerPoint 2003不同)我会

第1部分

  1. 将Excel文件数据链接到每个图表下方的Excel数据
  2. 提供直接使用该数据或使用用户数据覆盖该数据的能力
  3. Sample

    这为您提供了灵活的解决方案,但每个图表下的Excel无法通过PowerPoint菜单更新链接命令自动更新。

    第2部分

    您可以使用下面的代码测试每张幻灯片上的每个形状是否都有图表。如果是这样,此代码将更新图表下方Excel文件中的第一个Excel链接(此部分可以调整以处理多个链接)

        Sub ChangeChartData()
    
        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
                    Set pptWorkbook = pptChartData.Workbook
                    On Error Resume Next
                    'update first link
                    pptWorkbook.UpdateLink pptWorkbook.LinkSources(1)
                    On Error GoTo 0
                    pptWorkbook.Close True
                End If
            Next
        Next
    
        Set pptWorkbook = Nothing
        Set pptChartData = Nothing
        Set pptChart = Nothing
    
    End Sub
    

答案 1 :(得分:2)

这很容易实现,不需要任何VBA代码。

  1. 单击“Office按钮”,选择“编辑文件链接”(它位于“运行兼容性检查”下方,您必须向下滚动才能看到最后一个选项):

    Office Menu, "Prepare" submenu

  2. 选择所有嵌入式图表(此处称为“链接”),点击“立即更新”:

    "Links" window

  3. 您可以使用同一窗口来断开链接,也可以更改任何给定链接的源文件。