【发布时间】:2015-05-02 09:50:03
【问题描述】:
我需要将多个(大约 70 个)命名范围从 Excel 粘贴到 PowerPoint 作为图片。每张图片可能有不同的高度、宽度、位置和目标幻灯片。我将在 Excel 表中包含所有参数。例如:
- A 列:所有命名范围的列表 (NamedRange1)
- B 列:命名范围的单元格引用 (Sheet1:$A$1:$B$4)
- C 列:目标幻灯片编号
- D-G 列:控制大小和位置参数的值
我花费了大量时间研究堆栈溢出和其他站点的解决方案,并拼凑了下面适用于单个命名范围的代码,但我想找到一个利用循环或数组的解决方案(或其他)以避免复制和粘贴代码 70 次并手动更新命名范围和单元格引用。
假设:用户将只打开 1 个 excel 工作簿和 1 个已包含适当数量幻灯片的 powerpoint 实例。
StackOverflow 的大佬们能帮忙吗?
Sub test()
Dim PPApp As PowerPoint.Application
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.slide
Dim SlideNum As Integer
Set XLApp = GetObject(, "Excel.Application")
''define destination slide
SlideNum = Range("C2")
PPPres.Slides(SlideNum).Select
Set PPSlide = PPPres.Slides(PPApp.ActiveWindow.Selection.SlideRange.SlideIndex)
' Copy the range as a picture
XLApp.[namerange1].Copy
' Paste the range
PPSlide.Shapes.PasteSpecial(ppPasteEnhancedMetafile).Select
' Align the pasted range
PPApp.ActiveWindow.Selection.ShapeRange.Height = Range("D2")
PPApp.ActiveWindow.Selection.ShapeRange.Width = Range("E2")
' Align the shape
PPApp.ActiveWindow.Selection.ShapeRange.Left = Range("G2")
PPApp.ActiveWindow.Selection.ShapeRange.Top = Range("F2")
' Clean up
Set PPSlide = Nothing
Set PPPres = Nothing
Set PPApp = Nothing
End Sub
【问题讨论】:
标签: vba excel powerpoint excel-2013