Excel到PPT自动化Excel 2007中写入的VBA代码在Excel 2013中不起作用

我已经写了一个VBA代码来将Excel中的粘贴图表复制到Office 2007中的ppt中,但代码在Office 2013中不起作用。它提供了一个错误:

“编译错误:用户定义types未定义”和“对象需要(错误424)”。

码:

Sub ExcelToPres() Dim PPT As Object 'As PowerPoint.Application Dim PPTFile As PowerPoint.Presentation Dim PPTShape As PowerPoint.Shape Dim SlideNum As Integer Set PPT = CreateObject("PowerPoint.Application") PPT.Visible = True PPT.Presentations.Open Filename:="C:\Users\PS\Desktop\Work\Test - Blank.pptx" Set PPTFile = PPT.ActivePresentation PPT.ActiveWindow.ViewType = ppViewSlide SlideNum = 1 PPTFile.Slides(SlideNum).Select Sheets("Charts").ChartObjects("Chart 1").CopyPicture PPTFile.Slides(1).Shapes.Paste.Select PPT.ActiveWindow.Selection.ShapeRange.Left = 37 PPT.ActiveWindow.Selection.ShapeRange.Top = 127 SlideNum = 1 PPTFile.Slides(SlideNum).Select Sheets("Charts").ChartObjects("Chart 2").CopyPicture PPTFile.Slides(1).Shapes.Paste.Select PPT.ActiveWindow.Selection.ShapeRange.Left = 37 PPT.ActiveWindow.Selection.ShapeRange.Top = 354 SlideNum = 1 PPTFile.Slides(SlideNum).Select Sheets("Charts").ChartObjects("Chart 3").CopyPicture PPTFile.Slides(2).Shapes.Paste.Select PPT.ActiveWindow.Selection.ShapeRange.Left = 37 PPT.ActiveWindow.Selection.ShapeRange.Top = 127 SlideNum = 1 PPTFile.Slides(SlideNum).Select Sheets("Charts").ChartObjects("Chart 4").CopyPicture PPTFile.Slides(2).Shapes.Paste.Select PPT.ActiveWindow.Selection.ShapeRange.Left = 207 PPT.ActiveWindow.Selection.ShapeRange.Top = 127 SlideNum = 1 PPTFile.Slides(SlideNum).Select ActiveWorkbook.Sheets("Charts").ChartObjects("Chart 5").CopyPicture PPTFile.Slides(2).Shapes.Paste.Select PPT.ActiveWindow.Selection.ShapeRange.Left = 442 PPT.ActiveWindow.Selection.ShapeRange.Top = 127 Set PPT = Nothing Set PPTFile = Nothing Set PPSlide = Nothing End Sub 

在这种情况下424的最显而易见的原因是您尚未启用对PowerPoint模型的引用。 当你使用如下的早期绑定时,这是绝对必需的:

 Dim PPTShape as PowerPoint.Shape 

因为在Excel对象模型中没有属于这样的类的PowerPoint

或者,使用后期绑定的对象(如果您打算分发此macros/应用程序,可能会更好),比如您的应用程序对象:

 Dim PPT as Object Dim PPTFile As Object Dim PPTShape As Object