[英]How to paste multiple Excel charts into a PowerPoint presentation?
[英]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.