繁体   English   中英

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

[英]Paste Excel worksheet to a PowerPoint presentation

我正在尝试从Excel粘贴到完成的PowerPoint演示文稿中。 我已经从Peltier Tech和Spreadsheet Guru获得了一些代码。 该宏旨在在Excel模板中工作,该模板将生成另一个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

原始问题缺少有关原始工作表是什么或做什么的详细信息(如果它在另一个工作簿中),并且宏是从其他工作簿运行的,则必须首先使用以下命令创建新工作簿:

dim wb as workbook
wb = application.workbooks.add

如果工作簿是现有工作簿,则使用open代替

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

要找到所需的特定工作表,如果您只是从废料中创建了一个新的工作簿,则可以只使用第一个工作表:

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

或从废料中创建一个

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

ws变量将发送到您的宏

grandFinale ws

然后,您需要修改您的子项以将工作表作为参数

Sub grandFinale(tempsheet as Worksheet)

在您的代码中,将出现的Sheet2替换为tempsheet或您使用的变量名。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM