Excelから完成したPowerPointプレゼンテーションに貼り付けようとしています。私はPeltier TechとSpreadsheet Guruから少しのコードを取りました。マクロは、PowerPointに貼り付ける別のExcelワークシートを作成する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
今私には、マクロを含むブックのSheet2からコピーしているようです。別の(テンプレート)ワークブックを開くコードは表示されませんが、Set wk = Workbooks.Open( "C:\ test.xlsx")のようなものだと仮定します。もしそうなら、Set sh = wk.Worksheets( "nameOfSheet")のようなものを使ってそのブックに必要なシートを参照し、コード内のSheet2をshに置き換えます(Dim wkをWorkbookとして最初に定義した後、shワークシート) –