使用VBA替换Excel中的Powerpoint数据



我有一些"表格";在excel中,我每周都会导出到一个powerpoint中(我说"表格"是因为它们实际上只是单元格的范围,而不是表格(。现在我有一个宏,每周从powerpoint中删除所有形状,然后用一个不同的宏将表格导出到powerpoint。问题是它删除了幻灯片中的所有内容,包括幻灯片上的标题和评论。因此,现在我正试图编写代码来替换前几周的表格。到目前为止,这是我的代码,但当我到达时,它不起作用

pptpress.Slides(1).Shapes("Picture 8").Table.Cell(r, c).Shape.TextFrame.TextRange = Sheet2.Cells(r, c).Value

我认为它不起作用,因为单元格的范围实际上不是表?无论如何,有人对如何替换前几周的数据有什么建议吗?我在这里挣扎

Sub UpdateTables()
Dim pptapp As New PowerPoint.Application
Dim pptpress As PowerPoint.Presentation

Dim left As Double
Dim top As Double
Dim height As Double
Dim width As Double

Dim r As Integer
Dim c As Integer

Set pptpress = pptapp.Presentations.Open("xxxxxx")
'Table update
For r = 4 To 30

For c = 2 To 12

pptpress.Slides(1).Shapes("Picture 8").Table.Cell(r, c).Shape.TextFrame.TextRange = Sheet2.Cells(r, c).Value

Next c
Next r

End Sub

我认为它不起作用,因为单元格的范围实际上不是表?

是。形状的名称是";图片8";也是一种馈赠。很可能,这是粘贴到PPT幻灯片中的EMF/WMF/etc图片。

正如@Dan所建议的,插入一个新的表格形状并使用它可能是最简单的。或者,如果你有一个需要保留的特定表格格式,请手动将表格添加到幻灯片中,对其进行格式化,然后让代码将数据放入其中。

为了替换旧形状(或者在您的情况下:表格(,您可以使用标记或时间戳来确定需要删除的内容。一个很好的方法是在PowerPoint中使用标签。您可以将这些附加到演示文稿、幻灯片和形状(甚至更多(。它们对用户来说是不可见的,但可以通过代码(例如VBA(进行读取/写入。

以下是您需要查找的内容:https://learn.microsoft.com/en-gb//office/vba/api/powerpoint.tags

最新更新