我试图从Excel粘贴到完成的PowerPoint演示文稿。我从Peltier Tech和Spreadsheet Guru那里获取了一些代码。该宏旨在在Excel模板中生成另一个Excel工作表,然后将其粘贴到PowerPoint中。将Excel工作表粘贴到PowerPoint演示文稿
我测试了输出工作表本身的代码,它工作。
然而,当在Excel模板中真正执行宏失败。
我需要定义输出表作为对象变量?我如何在Excel到Powerpoint的粘贴循环和MyRangeArray部分中引用该变量?
请注意,objPPT是在grandFinale()的宏上游定义的。
Sub grandFinale()
Dim PPPres As PowerPoint.Presentation
Dim PPSlide As PowerPoint.Slide
Dim shp As Object
Dim MySlideArray As Variant
Dim MyRangeArray As Variant
Dim x As Long
Set objPPT = GetObject(, "Powerpoint.Application")
Set PPPres = objPPT.ActivePresentation
Set PPSlide = PPPres.Slides(objPPT.ActiveWindow.Selection.SlideRange.SlideIndex)
'declare pp slides
MySlideArray = Array(13, 14, 15, 16, 17, 18, 19, 20, 21, 22)
'declare excel ranges
MyRangeArray = Array(Sheet2.Range("A6:C18"), Sheet2.Range("A21:C33"), _
Sheet2.Range("A36:C48"), Sheet2.Range("A51:C63"), Sheet2.Range("A66:C78"), _
Sheet2.Range("A81:C93"), Sheet2.Range("A96:C108"), Sheet2.Range("A111:C123"), Sheet2.Range("A126:C138"), Sheet2.Range("A141:C153"))
'excel to powerpoint paste loop
For x = LBound(MySlideArray) To UBound(MySlideArray)
MyRangeArray(x).Copy
Set shp = PPPres.Slides(MySlideArray(x)).Shapes.PasteSpecial(DataType:=2)
'adjust images
With PPPres.PageSetup
shp.Left = (.SlideWidth \ 2) - (shp.Width \ 2)
shp.Top = (.SlideHeight \ 2) - (shp.Height \ 2)
End With
Next x
Application.CutCopyMode = False
End Sub
对我来说似乎是,您现在正从包含该宏的工作簿的工作表Sheet2中进行复制。您不会显示打开另一个(模板)工作簿的代码,但我认为它就像Set wk = Workbooks.Open(“C:\ test.xlsx”)。如果是这样的话,你需要在工作簿中引用你想要的工作表,像Set sh = wk.Worksheets(“nameOfSheet”),然后用sh替换你的代码中的Sheet2(首先用Dim wk定义变量为Workbook,工作表) –