我继承了一些使用三个全局变量的代码
Global PPTApp As PowerPoint.Application
Global PPTPres As PowerPoint.Presentation
Global PPtSlides As PowerPoint.Slide
稍后在代码中,它通过以下方式使用它们
Sub PasteTablesPPT(TargetText As String, PPTRange As Range)
Dim TargetSlide As PowerPoint.Slide
PPTApp.Activate
For Each PPtSlides In PPTPres.Slides 'Error on colleagues PC
With PPtSlides.Shapes.Title.TextFrame
If .HasText Then
If UCase(.TextRange.Text) = UCase(TargetText) Then
TargetNum = CInt(PPtSlides.SlideIndex)
Exit For
End If
End If
End With
Next
在我的PC上,它可以按应有的方式工作,即它会激活打开的Powerpoint应用程序,然后循环浏览该演示文稿中的每个幻灯片。
但是,在我的同事PC上,我标记的线路出现了错误。具体的错误是Error 451,我认为这与PPtSlides无法识别为PPtSlides有关。同样在调试模式下,当我将鼠标悬停在PPtSlides上时,它说“ Nothing”。
我们在VBA工具中使用了相同的引用检查,是否有人可以阐明为什么它可以在我的PC上而不是在我的同事上运行?
编辑:
定义PPTPres的部分(在另一个子目录中,这只是该子目录的一部分)
On Error GoTo ErrHandler
Set PPTApp = GetObject(class:="PowerPoint.Application")
PPTApp.Visible = msoTrue
Set PPTPres = PPTApp.Presentations("Testing File")
Exit Sub
最佳答案
在子PasteTablesPPT中,尝试将PPtSlides声明为PowerPoint.Slide。
dim PPtSlides as PowerPoint.Slide