Насколько я знаю, приведенный ниже код получает форму из активного окна, слегка подталкивает ее, копирует слайд и вставляет его сразу после текущего, затем превращает вставленный слайд в активное окно и подталкивает его еще раз:
Sub Test ()
' Get the active presentation
Dim oPresentation As Presentation
Set oPresentation = ActivePresentation
' Get the first slide in the presentation
Dim oSlide As Slide
Set oSlide = oPresentation.Slides(1)
' Get the first shape on the slide
Dim oShape As Shape
Set oShape = oSlide.Shapes(1)
' Nudge the shape to the right
oShape.Left = oShape.Left + 1
' Copy the whole slide
oSlide.Copy
' Paste the slide as a new slide at position 2
Dim oNewSlides As SlideRange
Set oNewSlides = oPresentation.Slides.Paste(2)
' Get a reference to the slide we pasted
Dim oNewSlide As Slide
Set oNewSlide = oNewSlides(1)
' Get the first shape on the NEW slide
Dim oNewShape As Shape
Set oNewShape = oNewSlide.Shapes(1)
' Nudge the shape to the right
oNewShape.Left = oNewShape.Left + 1
End Sub
Насколько я понимаю, для реализации этого кода у меня должно быть открыто активное окно, и в нем должна быть хотя бы одна фигура. До запуска этого кода у меня есть только один слайд; после запуска кода у меня есть два слайда: старый номер 1, а новый номер 2.
Если я выполню этот код еще раз, в результате я получу три слайда: самый старый - номер 1, а самый старый - номер 2, а не номер 3.
Мой вопрос заключается в том, как заставить его создавать слайды, чтобы новые слайды всегда были с большим порядковым номером, т. Е. Каждый вновь созданный слайд должен быть последним на боковой панели предварительного просмотра слайдов (самой нижней)?
А также, как я могу сделать это в цикле? Так что мне не нужно перезапускать этот код снова и снова, а просто сделать цикл с заданным числом итераций цикла.
Полагаю, если это цикл, то индекс слайдов должен быть преобразован в переменную, но я не знаю, как это сделать в PowerPoint VBA.