我编写了一个VBA代码,用于将粘贴图表从Excel复制到Office 2007中的ppt,但代码在Office 2013中不起作用。它出错:
"编译错误:用户定义的类型未定义"和"需要对象(错误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
答案 0 :(得分:1)
在这种情况下,424最明显的原因是您尚未启用对PowerPoint对象模型的引用。当您使用早期绑定时,这是绝对必需的:
Dim PPTShape as PowerPoint.Shape
因为Excel对象模型中没有此类PowerPoint
。
或者,使用后期绑定对象(如果您打算分发此宏/应用程序,可能会更好),例如您的应用程序对象:
Dim PPT as Object
Dim PPTFile As Object
Dim PPTShape As Object