将Excel工作表粘贴到PowerPoint演示文稿

我试图从Excel粘贴到完成的PowerPoint演示文稿。 我从Peltier Tech和Spreadsheet Guru那里拿了一些代码。 该macros旨在在Excel模板中生成另一个Excel工作表,然后将其粘贴到PowerPoint中。

我testing了输出工作表本身的代码,它的工作原理。

宏工作时输出

但是,在Excel模板中为macros执行macros时失败。

宏失败时输出

我是否需要将输出工作表定义为对象variables? 我怎样才能在Excel到Powerpoint的粘贴循环和MyRangeArray部分中引用该variables?

请注意,objPPT在grandFinale()的macros上游定义。

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 

原始问题缺less一些原始工作表是什么的详细信息,如果它在另一个工作簿中,并且该macros是从另一个工作簿中运行的,则必须首先创build新的工作簿

 dim wb as workbook wb = application.workbooks.add 

如果工作簿是一个现有的工作簿,则使用“打开”

 set wb = workbooks.open("templateWB.xls") 

要获得您需要的特定工作表,如果您只是使用废料创build了一个新的工作簿,则可以使用第一个工作表:

 dim ws as worksheet ws =wb.worksheets(1) 

或从废品中创build一个

 dim ws as worksheet set ws = wb.worksheets.add 

wsvariables会被发送到你的macros

 grandFinale ws 

那么你需要修改你的子工作表作为参数

 Sub grandFinale(tempsheet as Worksheet) 

在您的代码中更改所有出现的Sheet2 tempsheet或您使用的variables名称。