Насколько мне известно, приведенный ниже код получает фигуру из активного окна, немного сдвигает ее, копирует слайд и вставляет сразу после текущего, затем превращает вставленный слайд в активное окно и снова сдвигает его:
Подтест()
' 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
Конец сабвуфера
Насколько я понимаю, чтобы реализовать этот код, у меня должно быть открыто активное окно, и в нем должна быть хотя бы одна фигура. Прежде чем запустить этот код, у меня есть только один слайд; после запуска кода у меня есть два слайда: более старый — номер 1, а новый — номер 2.
Если я запущу этот код еще раз, то в результате получу три слайда: самый старый будет по-прежнему номером 1, а самый старый будет номером 2, а не номером 3.
Мой вопрос заключается в том, как я могу заставить его создавать слайды, чтобы новые слайды всегда были с большим порядковым номером, т.е. каждый вновь созданный слайд должен быть последним на боковой панели предварительного просмотра слайдов (самой нижней)?
А также, как я могу сделать это в цикле? Так что мне не нужно снова и снова запускать этот код, а просто сделать цикл с заданным количеством итераций цикла.
Я думаю, если это должен быть цикл, то индекс слайдов должен быть преобразован в переменную, но я не знаю, как это сделать в PowerPoint VBA.