【问题标题】:Copying the Data from Excel to PowerPoint table using VBA使用 VBA 将数据从 Excel 复制到 PowerPoint 表
【发布时间】:2015-06-12 10:11:01
【问题描述】:

让我向你解释我想要做什么,然后我会向你解释我卡在哪里

--> 将数据从 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

【问题讨论】:

    标签: vba excel powerpoint


    【解决方案1】:

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

    Dim aSLide as Powerpoint.SlideRange
    
    Set aSlide = .Slides("Slide1").Duplicate
    
    with aSlide
      for each shp in aslide.shapes
    

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

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

    祝你好运!

    【讨论】:

    • 嗨,rigo,我尝试了你的方式(使用副本),但它在复制幻灯片上而不是在母版幻灯片上工作。首先,它应该在母版幻灯片上工作,然后跳转到新幻灯片。抱歉,我不明白您关于将文本分配给每个单元格的第二点。实际上,我必须将整行从 excel 带到 powerpoint。
    • 我通常将数据添加到除了第一张幻灯片之外的所有内容,然后从卡片组中删除第一张幻灯片。代码 sn-p 循环遍历幻灯片上的形状,以便您可以分配值。您可以使用 Excel 中的连接命令将所有单元格连接成一个文本字符串,或者一次将一个单元格分配给 PowerPoint 中的表格。或者,您可以通过附加值将其他 Excel 行分配给 PPT 中的同一形状。
    • 抱歉回复晚了。好的,我现在明白你的意思了,我会尝试这样做。
    • 如果您对答案感到满意,也请投票。
    • 我的声望不够 :)
    猜你喜欢
    • 2016-11-02
    • 1970-01-01
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2011-09-15
    • 1970-01-01
    相关资源
    最近更新 更多