2015-11-13 1 views
3

Я унаследовал некоторый код, который использует три глобальные переменныеОшибка 451 при обращении Powerpoint презентации и слайдов

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, а затем проходит через каждый из слайдов внутри этой презентации.

Однако на моих коллегах ПК, ошибки в строке помечены. Конкретная ошибка Error 451, и я думаю, что это связано с тем, что PPtSlides не распознается как часть, если PPtPres.Slides. Также в режиме отладки, когда я наводил более PPtSlides, он говорит = «Ничего».

У нас есть те же ссылки в инструментах VBA, может ли кто-нибудь пролить свет на то, почему это будет работать на моем ПК, а не на моих коллегах?

РЕДАКТИРОВАТЬ: часть, где определяется PPTPres (в другом суб и это только экстракт этого суб)

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

Вы используете тот же PPT-файл? –

+1

Если вы проверяете значение «PPtSlides», когда строка желтого цвета, это нормально, что он ничего не говорит о том, что строка еще не выполнена. Хотя, можете ли вы ** добавить часть, были определены «PPTPres»? ** Вероятно, это оттуда. * И просто замечание, чтобы соблюдать соглашения, было бы проще понять, что вместо «PPtSlides» вместо «PPtSlides» следует использовать «PPtSlides», как для одного слайда, а не для коллекций. * – R3uK

+1

Та же версия PowerPoint? –

ответ

0

В суб PasteTablesPPT, попытайтесь объявить PPtSlides, как PowerPoint.Slide

dim PPtSlides as PowerPoint.Slide 

 Смежные вопросы

  • Нет связанных вопросов^_^