【发布时间】:2021-05-04 22:54:25
【问题描述】:
我正在尝试自动将某些展品从 Excel 复制到 PPT 模板,以应对大约 500 种不同的情况。不幸的是,我遇到了错误,它不一致地抛出错误 462。我已经浏览了几个小时的在线资源,但找不到任何有用的东西。我知道一个常见的错误是后期绑定;但是,我已尽我所能尝试应用它。非常感谢您的帮助..
Dim myBook As Workbook
Set myBook = ThisWorkbook
Dim pptName As String
Dim DestinationPPT As String
Dim myShape As Object
Dim ppt As Object
Dim mySlide As Object
Dim pptA As Object
Set pptA = CreateObject("PowerPoint.Application")
DestinationPPT = myBook.path & "\template.pptx"
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'Call Module1.mkdirectories(myBook.path)
Dim inputRange As Excel.Range
Dim c As Excel.Range
Dim worksheetCt As Integer
worksheetCt = 8
myBook.Worksheets("input").Activate
Set inputRange = Evaluate(myBook.Worksheets("input").Range("c4").Validation.Formula1)
For Each c In inputRange
Range("c4").Value = c
Calculate
Set ppt = pptA.Presentations.Open(DestinationPPT)
For worksheetCt = 8 To 39
'On Error Resume Next
myBook.Activate
myBook.Worksheets(worksheetCt).Range("Print_Area").Copy
DoEvents
pptA.Activate
'ppt.Activate
Set mySlide = ppt.Slides(worksheetCt - 5)
'Call Module1.UglyWait
**mySlide.Shapes.PasteSpecial DataType:=2**
'Call Module1.UglyWait
**Set myShape = mySlide.Shapes(mySlide.Shapes.Count)**
粗线是代码失败的地方..
【问题讨论】:
-
虽然Runtime error 462 Excel VBA using Word 提到的是 Word 而不是 Powerpoint,但我敢打赌,解决方案与您的问题相同。
-
嘿,肯 - 感谢您的回复。我认为,由于我将每个对象设置为对 PowerPoint 应用程序和 PowerPoint 平台的引用,因此这不是正确的解决方案。你还有其他想法吗?我试图重新添加对应用程序的引用,但没有任何运气。
-
它告诉您需要在这些调用中引用 Powerpoint 应用程序。您的代码在 Excel 中执行,它没有演示文稿或幻灯片。不要认为你做对了——如果你做对了,你就不会有问题。 :-)
-
我想我应该重新表述我的观点,我将 powerpoint 平台和幻灯片设置为对象,但对它们都使用了 PowerPoint 应用程序。例如,我说 ppt = pptA.Presentations.Open ... 然后 myslide = ppt.slides ... 在这两种情况下,对 PowerPoint 应用程序的调用都在那里...我误解了吗?谢谢你的帮助!!
-
我试过了,但它抛出了一个错误。任何其他建议@chrisneilsen