【发布时间】: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