К счастью, это лишь незначительная проблема: используется неправильный индекс:
i = 10
For j = 1 To PPT.ActivePresentation.Slides.Count
For k = 1 To PPT.ActivePresentation.Slides(i).Shapes.Count
Если вы присмотритесь, вам нужно использовать j
вместо i
в последней строке.
И для второго листинга кода вы можете просто опустить строки
Set PPTSlides = CreateObject("PowerPoint.Slides")
Set PPTShapes = CreateObject("PowerPoint.Shapes")
, потому что внизу первая переменная будет установлена как ActivePresentation.Slides
.
Как вы используете for each
l oop, также имеет смысл переименовать эти две переменные из множественного числа в единственное, т.е. PPTSlide
вместо PPTSlides
.
Обратите внимание, что For Each PPTShapes In PPT.ActivePresentation.Shapes
делает не работает. Вам нужно получить Формы из For Each PPTShape in PPTSlide.Shapes
.
Всего наилучшего