【问题标题】:VBA script to send charts from excel to specific slides in a powerpointVBA 脚本将图表从 excel 发送到 powerpoint 中的特定幻灯片
【发布时间】:2019-10-06 09:22:41
【问题描述】:

正在寻找一些 VBA 脚本,该脚本将采用 excel 图表并将它们放入 PowerPoint 演示文稿中的特定幻灯片和该 PowerPoint 中的位置。我有一个包含大约 40 个图表的 Excel 表,我将它们全部放在工作簿的同一张表上。有没有办法遍历所有这些图表,复制它们然后放入 PowerPoint 中?

我想我可以以某种方式在 excel 中标记图表,以便 VBA 可以将它们挑选出来,然后将这些标签与 PowerPoint 中的特定位置进行匹配,以便它们复制到那里。

为了提供一些背景信息,所有这些图表都是动态的,并且会随着我输入新数据(想想 40 种相同格式的数据类别)而发生变化,这些新数据需要在图表中可视化并放入 PowerPoint 幻灯片中 - 40类别 * 40 个图表 = 1600 次复制、粘贴、格式化等。幻灯片是我公司的特殊格式,因此它们的格式已经完成,并且有一个缺少图表的 shell 框架。所以我想找到一种方法来自动化它。

我对如何以简化的方式进行操作有一个很好的想法 - 创建一个 PPT 并将图表作为图片复制到新创建的 powerpoint 中的自己的幻灯片中,但这忽略了已经制作的格式和同一张幻灯片上的图表:

Sub Macro100()

'Step 1:  Declare your variables
    Dim PP As PowerPoint.Application
    Dim PPPres As PowerPoint.Presentation
    Dim PPSlide As PowerPoint.Slide
    Dim i As Integer


'Step 2:  Check for charts; exit if no charts exist
    Sheets("Slide Data").Select
    If ActiveSheet.ChartObjects.Count < 1 Then
    MsgBox "No charts existing the active sheet"
    Exit Sub
    End If


'Step 3:  Open PowerPoint and create new presentation
    Set PP = New PowerPoint.Application
    Set PPPres = PP.Presentations.Add
    PP.Visible = True


'Step 4:  Start the loop based on chart count
    For i = 1 To ActiveSheet.ChartObjects.Count


'Step 5:  Copy the chart as a picture
    ActiveSheet.ChartObjects(i).Chart.CopyPicture _
    Size:=xlScreen, Format:=xlPicture
    Application.Wait (Now + TimeValue("0:00:1"))


'Step 6:  Count slides and add new slide as next available slide number
    ppSlideCount = PPPres.Slides.Count
    Set PPSlide = PPPres.Slides.Add(SlideCount + 1, ppLayoutBlank)
    PPSlide.Select


'Step 7:  Paste the picture and adjust its position; Go to next chart
    PPSlide.Shapes.Paste.Select
    PP.ActiveWindow.Selection.ShapeRange.Align msoAlignCenters, True
    PP.ActiveWindow.Selection.ShapeRange.Align msoAlignMiddles, True
    Next i


'Step 8:  Memory Cleanup
    Set PPSlide = Nothing
    Set PPPres = Nothing
    Set PP = Nothing

End Sub

我想选择不同的代码来选择一个已经制作好的 ppt 并将图表放在同一张幻灯片上 - 每张幻灯片通常会有两个图表,它们平等地放在每张幻灯片上(幻灯片的左侧和右侧)。

我知道这是一个有点复杂和冗长的帖子,但是非常感谢任何对问题任何部分的帮助。如果有任何需要进一步澄清的地方,请告诉我。

【问题讨论】:

    标签: excel vba powerpoint


    【解决方案1】:

    您可以使用与命名范围相同的方式来命名图表。

    然后使用this来参考图表:

    Charts("Slide5Right").CopyPicture...

    额外的好处是您不必遍历所有图表。可能想要创建一个帮助表来代替循环。

    【讨论】:

    猜你喜欢
    • 2014-10-15
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多