引用PPT演示文稿和幻灯片时出现错误451



我继承了一些使用三个全局变量的代码

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上,在我标记的行上出现了错误。具体错误为错误451,我认为这与PPtSides未被识别为PPtPresSlides的一部分有关。此外,在调试模式下,当我将鼠标悬停在PPtSide上时,它会显示="Nothing"

我们在VBA工具中有相同的引用检查,有人能解释为什么这在我的电脑上有效,而不是在我的同事身上吗?

编辑:定义PPTPres的部分(在另一个子中,这只是该个子的摘录)

On Error GoTo ErrHandler
    Set PPTApp = GetObject(class:="PowerPoint.Application")
    PPTApp.Visible = msoTrue
    Set PPTPres = PPTApp.Presentations("Testing File")
Exit Sub

在子PasteTablesPPT中,尝试将PPT幻灯片声明为PowerPoint。幻灯片

dim PPtSlides as PowerPoint.Slide

最新更新