【发布时间】:2023-03-06 17:21:01
【问题描述】:
我在 excel 中有一些“表格”,我每周都会导出到 powerpoint(我说“表格”是因为它们实际上只是单元格范围,而不是实际的表格)。现在我有一个宏,可以每周从 powerpoint 中删除所有形状,然后使用不同的宏将表格导出到 powerpoint。这样做的问题是它会从 powerpoint 中删除所有内容,包括幻灯片上的标题和 cmets。所以现在我正在尝试编写代码来替换前几周的表格。到目前为止,这是我拥有的代码,但是当我到达时它不起作用
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
【问题讨论】:
-
运行代码时会发生什么?你有错误吗?如果是,错误是什么,在哪一行?
-
试试
pptpress.Slides(1).Shapes("Picture 8").Table.Cell(r, c).Shape.TextFrame.TextRange.Text(你错过了最后一个.Text部分) -
它给了我一个错误,说“对象'形状'的方法'表'失败”。那是因为我输入数据的只是一个单元格范围,而不是实际的表格吗?
-
抱歉,我错过了关于不是实际表格的部分。如果是这种情况,那么您需要使用某种命名模式来单独处理每个形状,这会告诉您每个形状在哪里。使用一张桌子可能更容易......
-
从头开始构建它不是一种选择吗?我做了一点,编辑现有的 PPT 总是给我带来戏剧性,所以我每次都用代码从头开始构建它。
标签: excel vba powerpoint