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

时间:2015-04-07 17:51:28

标签: excel vba excel-vba powerpoint

让我向你解释一下我想要做什么,然后我会解释你我被困在哪里

- >对于包含数据的每一行

,将数据从Excel表复制到PowerPoint表(它们都具有相同的标题)

- >如果PowerPoint中的表格超过某个高度,它应该开始粘贴新幻灯片上的数据

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

- >首先,考虑将ppt中的一张幻灯片作为主幻灯片,其中表格有标题,下面有一个空白行 - 我将复制此幻灯片并在我移动到下一张幻灯片时将其粘贴

- >从Excel复制一行并将其粘贴到PowerPoint表

- >如果PowerPoint中的表格跨越某个高度,则粘贴新的主幻灯片(我在复制中)

- >对于包含数据的Excel中的每一行,此循环应该继续。

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

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

1 个答案:

答案 0 :(得分:0)

如果您首先复制您的masterslide,您可以将新幻灯片分配给可以引用的变量。

Dim aSLide as Powerpoint.SlideRange

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

with aSlide
  for each shp in aslide.shapes

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

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

祝你好运!