2011-11-01 102 views
1

我真的爲此而努力,我似乎​​返回運行時錯誤「13」不能夠找到我的代碼不工作的原因:複製Excel表格到PowerPoint

Dim i1 As Integer 
Dim PPapp As Object, XLapp As Object 
Dim slide1 As Slide, slide2 As Slide, slide3 As Slide 
Dim PPoutput As Presentation 
Dim output_table As ShapeRange 
Set PPapp = New PowerPoint.Application 
Set XLapp = Excel.Application 
Set PPoutput = PPapp.Presentations.Open("Q:\SDPMaler\blank.potx", untitled:=msoTrue, withwindow:=msoTrue) 
Set slide1 = ppoutput.Slides.AddSlide(1, ppoutput.SlideMaster.CustomLayouts(13)) 
XLapp.ActiveWorkbook.Sheets("PPT output").Range("y4:ae11").Copy 
Set output_table = slide1.Shapes.PasteSpecial(ppPasteJPG, msoFalse, "", 1, "", msoTrue) 

這裏我的代碼失敗:宏創建PowerPoint演示帶來了在正確的佈局幻燈片,甚至的過去表作爲圖片

.PasteSpecial(DataType:=ppPasteOLEObject, link:=msoTrue) 

的工作方式相同,但無論是我收到「運行時錯誤‘13’:類型不匹配「粘貼代碼的最後一行。即使#13通常是一個簡單的錯誤發現我這次真的卡住了。 希望有人能幫助我 感謝 PS:II正在使用Office 2010和正在運行Excel中

我猜的.PasteSpecial函數不返回一個ShapeRange所以當你嘗試分配的結果,宏觀

回答

1

我的猜測:

更改此:

昏暗output_table作爲ShapeRange

要:

昏暗output_table作爲PowerPoint.ShapeRange

假設您已經設定了參考PowerPoint或

暗淡output_table作爲對象,如果您使用後期綁定

通過調光它作爲ShapeRange在Excel中,您要創建一個變量來保存一個Excel shaperange

,但是當你粘貼到PPT,你會得到一個PowerPoint的形狀,這將導致類型不匹配。

+0

我剛纔看到我忘了謝謝你:非常感謝你修復它。 – seba

0

.PasteSpecial被聲明爲ShapeRange對象的變量(output_table)會導致類型不匹配。

嘗試Dim output_table作爲Variant,然後通過查看TypeName(output_table)進行調試 - 如果您甚至需要PasteSpecial的結果。