Доколкото знам, кодът по-долу получава форма от активния прозорец, избутва я малко, копира слайда и го поставя точно след текущия, след което превръща поставения слайд в активен прозорец и го избутва отново:
Подтест()
' 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.