首页 文章

如何在PowerPoint VBA中创建循环?

提问于
浏览
3

据我所知,下面的代码从活动窗口获取一个形状,轻推一下,复制幻灯片并在当前窗口之后粘贴它,然后将粘贴的幻灯片转换为活动窗口,然后再次轻推它:

Sub Test()'获取有效的演示文稿

昏暗的演示作为演讲
设置oPresentation = ActivePresentation

'获取演示文稿中的第一张幻灯片

Dim oSlide As Slide
设置oSlide = oPresentation.Slides(1)

'在幻灯片上获得第一个形状

昏暗的oShape作为形状
设置oShape = oSlide.Shapes(1)

'向右推动形状

oShape.Left = oShape.Left 1

'复制整张幻灯片

oSlide.Copy

'将幻灯片粘贴为位置2的新幻灯片

Dim oNewSlides作为SlideRange
设置oNewSlides = oPresentation.Slides.Paste(2)

'获取我们粘贴的幻灯片的参考

Dim oNewSlide As Slide
设置oNewSlide = oNewSlides(1)

'在新幻灯片上获得第一个形状

Dim oNewShape作为形状
设置oNewShape = oNewSlide.Shapes(1)

'向右推动形状

oNewShape.Left = oNewShape.Left 1
结束子

据我所知,为了实现这个代码,我应该打开一个活动窗口,它应该至少有一个形状 . 在我运行此代码之前,我只有一张幻灯片;代码运行后,我有两张幻灯片:旧版本为1,较新版本为2 .

如果我再次运行此代码,我将得到三张幻灯片:最旧的一个仍为数字1,但最旧的一个是数字2,而不是数字3 .

我的问题是如何让它制作幻灯片,以便新的幻灯片总是具有更大序数的幻灯片,即每个新创建的幻灯片应该是幻灯片预览侧边栏中的最后一个(最低的幻灯片)?

而且,我怎么能把它变成一个循环?因此,我不需要一次又一次地重新运行此代码,而只需使用给定数量的循环迭代进行循环 .

我想,如果它应该是一个循环,那么幻灯片索引应该变成一个变量,但我不知道如何在PowerPoint VBA中这样做 .

1 回答

  • 4

    我不确定你的代码是否有意义 . 它本质上:

    • 获取第一张幻灯片

    • 获取幻灯片上的第一个形状

    • 向右移动1个单位

    • 复制第1张幻灯片

    • 将其粘贴为第二张幻灯片

    • 获取新第二张幻灯片上的第一个形状

    • 向右移动1个单位

    它为什么要移动两次,一次放在原件上,一次放在复印件上?

    无论回答您的具体问题:

    要将其粘贴为最后一张幻灯片,请替换

    Set oNewSlides = oPresentation.Slides.Paste(2)
    

    Set oNewSlides = oPresentation.Slides.Paste() #no index pastes as last
    

    循环使用这样的东西:

    Dim oPresentation As Presentation
    Set oPresentation = ActivePresentation
    
    Dim oSlide As Slide
    Dim oSlides As SlideRange
    Dim oShape As Shape
    Dim slideNumber As Integer
    
    For slideNumber = 1 To 10
    
        Set oSlide = oPresentation.Slides(oPresentation.Slides.Count)
        oSlide.Copy
        Set oNewSlides = oPresentation.Slides.Paste()
        Set oSlide = oNewSlides(1)
        Set oShape = oSlide.Shapes(1)
        oShape.Left = oShape.Left + 5
    
    Next slideNumber
    

    这需要最后一张幻灯片,复制它,将副本粘贴为新的最后一张,向右轻推第一张形状,拍摄新的最后一张幻灯片,复制它,将副本粘贴为最后一张,将第一张形状轻推到右边,等等......它会这样做10次 .

相关问题