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



我正在尝试构建这个系统,其中我有这个PowerPoint演示文稿,其中包含来自外部Excel文件的链接图形。我已经看到我可以在PowerPoint中右键单击此图表,然后单击"更新链接",该图表将自动更新。

但是,如果我想实现自动化怎么办?如果可以在不创建加载项的情况下完成此操作,那就太好了。那么PowerPoint中有哪些事件处理程序呢?我想有一个事件是SlideChange什么的?我可以让演示文稿无限循环并更新每个新滑动开关的链接吗?可能有大量的图表。图表的每个部分都有一张幻灯片。

或者,还有其他好主意吗?我正在尝试构建的系统基本上是一个框架,用于收集数据并以任何可能需要的形式显示它。数据会自动从经济软件导入数据库。因此,我创建了一个命令行应用程序,该应用程序基本上可以打开一个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:UserskennyDocumentsCharttest.pptx")
        updatePPTGraph()
    End Sub
End Class

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

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

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

最新更新