PowerPoint VBA - 定期从Excel更新链接图

时间:2011-05-11 13:11:12

标签: excel-vba powerpoint powerpoint-vba vba excel

我正在尝试使用外部Excel文件中的链接图来构建此系统。我已经看到我可以在PowerPoint中右键单击此图并单击“更新链接”,图表会自动更新。

但如果我想要自动化怎么办?如果可以在不创建本来不错的加载项的情况下完成此操作。 PowerPoint中有哪些事件处理程序?我估计有一个SlideChanged事件?我可以让演示文稿无限循环并更新每个新滑动开关的链接吗?可能有大量的图表。每个图形部分都有一张幻灯片。

或者,还有其他任何好主意吗? 我正在尝试构建的系统基本上是一个收集数据并以任何可能需要的形式显示它的框架。数据自动从经济软件导入数据库。所以我创建了一个命令行应用程序,它基本上打开一个Excel文件并运行一个宏(收集新数据并将其复制到工作表中)。此命令行应用程序设置为通过计划任务作为特定时间运行。我希望自动显示这些数据。

我实际上自己做了很多事情:)

这是VB.NET应用程序的代码(可以用作命令行应用程序)

Imports Microsoft.Office.Interop
Public Class Form1

    Dim oPPTApp

    Sub updatePPTGraph()    
        For Each oSlide In oPPTApp.ActivePresentation.Slides
            For Each oShape In oSlide.shapes    
                If oShape.Type = 10 Then
                    oShape.LinkFormat.Update()
                End If

            Next
        Next
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        oPPTApp = New PowerPoint.Application
        oPPTApp.visible = True
        Dim oPresentation As PowerPoint.Presentation

        oPresentation = oPPTApp.Presentations.Open("C:\Users\kenny\Documents\Charttest.pptx")
        updatePPTGraph()
    End Sub
End Class

这显然是一个开始。我需要弄清楚是否可以在播放幻灯片时完成。但我认为这应该是可能的。当我设法获得值得一提的东西时会更新:)

1 个答案:

答案 0 :(得分:0)

更改基础幻灯片(即从外部Excel应用程序)应更新正在运行的节目;除非你强制重绘,否则正在运行的节目中的当前幻灯片通常不会显示更新,但是当它再次出现在节目中时,更新应该是可见的。

总而言之,从Excel自动化PPT比让它控制事物并按需提取更新更容易......至少除非你想要包含一个加载项来处理PPT中的事件