使用 VBA 将数据从 Excel 复制到 PowerPoint table

Copying the Data from Excel to PowerPoint table using VBA

让我向您解释一下我正在尝试做什么,然后我会向您解释我被困在哪里

--> 将数据从 Excel table 复制到 PowerPoint table(它们具有相同的 header),每行包含数据

--> 如果 PowerPoint 中的 table 超过特定高度,它应该开始在新幻灯片上粘贴数据

所以,这就是我接近的方式:

--> 首先,将 ppt 中的一张幻灯片作为母版幻灯片,其中 table 有 headers 和下面的空白行 - 我将复制这张幻灯片并在我使用时粘贴它将转到下一张幻灯片

--> 从 Excel 各复制一行并粘贴到 PowerPoint table

--> 如果PowerPoint中的table超过一定高度,则粘贴新的母版幻灯片(我有复制)

--> 这个循环应该对 Excel 中有数据的每一行继续。

我正在一点一点地接近它;到目前为止,我已经创建了用于在 .ppt table 中插入行并在超过 table 高度限制时粘贴幻灯片的循环。但我被困在这里 - 下面给出的循环仅为母版幻灯片插入行并粘贴下一张幻灯片但不插入其他幻灯片。

Public Sub Excel_cpy_pst()

Dim oTbl As Table
Dim mShp As ShapeRange
Dim shp As Object
Dim sldCount As Slide

Set sldCount = ActivePresentation.Slides(ActivePresentation.Slides.Count)

ActivePresentation.Slides(6).Copy 'Copying and using it as a master slide

Set mShp = ActivePresentation.Slides(ActivePresentation.Slides.Count).Shapes.Range(Array("MyShape"))
Set oTbl = mShp.Table

For Each shp In ActivePresentation.Slides
    If mShp.Height <= 6.34 * 72 Then
    With oTbl
        .Rows.Add (-1) 'adding  a row at the bottom of a table
    End With
    ElseIf ActivePresentation.Slides.Count <= 8 Then 'to stop it from infinite loop, putting a constatnt
        With ActivePresentation.Slides
            ActivePresentation.Slides.Paste (ActivePresentation.Slides.Count + 1)
        End With
    End If
Next

End Sub

如果您从复制母版幻灯片开始,您可以将新幻灯片分配给一个可以引用的变量。

Dim aSLide as Powerpoint.SlideRange

Set aSlide = .Slides("Slide1").Duplicate

with aSlide
  for each shp in aslide.shapes

将此添加到您的循环中以引用原始幻灯片的新副本。

如果您的幻灯片模板 (slide1) 构造为 table,您可以将文本分配给 table 中的每个单元格,然后移动到下一张幻灯片而不检查大小。边走边填方框。

祝你好运!