我继承了一些使用三个全局变量
的代码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
在我的电脑上,它可以正常工作,即它会激活开放的powerpoint应用程序,然后循环播放该演示文稿中的每个幻灯片。
然而,在我的同事PC上,在我标记的行上遇到错误。具体错误是 Error 451 ,我认为这与PPtSlides没有被识别为PPtPres.Slides的一部分有关。同样在调试模式下,当我将鼠标悬停在 PPtSlides上时,它说=“没什么”。
我们在VBA工具中使用相同的参考文件,是否有人可以了解为什么这可以在我的PC而不是我的同事上工作?
编辑: 定义PPTPres的部分(在另一个子部分中,这只是该子部分的提取)
On Error GoTo ErrHandler
Set PPTApp = GetObject(class:="PowerPoint.Application")
PPTApp.Visible = msoTrue
Set PPTPres = PPTApp.Presentations("Testing File")
Exit Sub
答案 0 :(得分:0)
在子PasteTablesPPT中,尝试将PPtSlides声明为PowerPoint.Slide
dim PPtSlides as PowerPoint.Slide