2017-01-23 119 views
2

我花了好几个小时看看我的问题的各种建议的解决方案,但无法找到任何似乎做这项工作,或更可能,我的把握VBA了解我理解在线解决方案的能力。因此,我希望你们中的一位善良的人可以帮助我解决问题。使用VBA粘贴范围从Excel到PowerPoint幻灯片的某个幻灯片

我有一个包含数据的少量(标题和编号等)的Excel工作表打开

我想复制这个范围,并将其粘贴(而不是作为一个照片,我希望能够格式化它在幻灯片内如有必要)放在特定的幻灯片(幻灯片2)中,我已经创建了一个Powerpoint模板。

我VBA正确打开使用下面的代码基于模板的新演示:

'Opens a PowerPoint Document from Excel 

Dim objPPT As Object 

Set objPPT = CreateObject("PowerPoint.Application") 
objPPT.Visible = True 

'Change the directory path and file name to the location 
'of your document 

objPPT.Presentations.Open "C:\Users\Colin\Dropbox (Edge45)\Edge45 Team Folder\Edge45 Company Documents\Templates\Powerpoint Templates\Edge45 Audit Template Macro.potm", Untitled:=msoTrue 

然而,这是我卡住 - 我不知道如何将Excel表格数据粘贴到演示文稿打开后,正确的幻灯片。我的数据是在范围A1:D16

非常感谢你提前

回答

1

试试这一个。我已将Excel工作表分配给一个变量(XLws),并将PowerPoint幻灯片分配给另一个变量(PPslide)。您可以在它们之间复制/粘贴对象。

顺便说一句,你需要启用PowerPoint库。如果你不这样做,请在你的VBA项目中去工具 - >参考 - > Microsoft PowerPoint 15.0对象库

Sub PPcopy() 
Dim PPapp As PowerPoint.Application, PPpres As PowerPoint.Presentation, PPslide As PowerPoint.Slide 
Dim XLws As Worksheet 

    Set XLws = ActiveSheet 
    Set PPapp = New PowerPoint.Application 
    Set PPpres = PPapp.Presentations.Open("C:\Users\Colin\Dropbox (Edge45)\Edge45 Team Folder\Edge45 Company Documents\Templates\Powerpoint Templates\Edge45 Audit Template Macro.potm") 
    PPapp.Visible = True 
    Set PPslide = PPpres.Slides(2) 
    XLws.Range("A1:D16").Copy 
    PPslide.Shapes.PasteSpecial DataType:=ppPasteOLEObject, Link:=msoFalse 
    Application.CutCopyMode = False 

End Sub 
+0

然而,@Limak太棒了,粘贴的对象我无法根据需要选择单独的单元格和格式。我假设这是与粘贴类型的工作方式有关 - 我需要将其更改为VBA代码中的粘贴,以便粘贴,以便操作单元格的内容? – Superhans

+0

我发布的方法使用格式化表单源工作簿。那么,为什么不在Excel中操作你的表格,然后将它粘贴到PowerPoint中,而不是在PowerPoint中编辑Excel对象呢?这会变得更加复杂,甚至是不可能的。 – Limak

+0

嗨,是的,这是一个解决方案,但我确实需要在Powerpoint中点击一次。如果我在Excel中复制一些单元格,然后在Powerpoint中粘贴一次特殊的“Keep Source Formatting(K)”,我会得到一个可编辑的表格,我可以更改单元格间距,插入新行等。如果我可以手动执行,肯定可以使用VBA完成? – Superhans