代码之家  ›  专栏  ›  技术社区  ›  Jack Armstrong

VBA中的Powerpoint幻灯片计数变量

  •  3
  • Jack Armstrong  · 技术社区  · 9 年前

    我正在vba中创建Powerpoint。我的计划是设置代码,使每个子程序创建特定的幻灯片。但是,我需要将幻灯片编号传递给每个子程序,以便它在正确的位置创建正确的幻灯片。我很难定义幻灯片的内容。计数在excel vba中。我知道从技术上讲这是一个很长的过程,但不知何故,我能够在另一个不再工作的代码补丁中以整数的形式传递它。

    我的问题是:

    1. 我应该如何通过幻灯片。将变量计数到创建新幻灯片的子程序中?是整数还是长?

    我有一些示例代码:

    Sub CreatePres()
    
    Dim ppApp As PowerPoint.Application
    Dim ppPres As PowerPoint.Presentation
    Dim ppSlide As PowerPoint.Slide
    Dim ppTextbox As PowerPoint.Shape
    
    Set ppApp = New PowerPoint.Application
    ppApp.Visible = True
    ppApp.Activate
    
    Set ppPres = ppApp.Presentations.Add
    slidesCount = ppPres.Slides.Count
    Set ppSlide = ppPres.Slides.Add(slidesCount + 1, ppLayoutTitle)
    ppSlide.Shapes(1).TextFrame.TextRange.Text = "Hello world"
    ppSlide.Shapes(2).TextFrame.TextRange.Text = Date
    slidesCount = slidesCount + 1
    
    Call slide2(slidesCount)
    
    End Sub
    Sub slide2(i As Integer)
    Set ppSlide = ppPres.Slides.Add(i + 1, ppLayoutTitle)
    ppSlide.Select
    ppSlide.Shapes(1).TextFrame.TextRange.Text = "Hello world"
    ppSlide.Shapes(2).TextFrame.TextRange.Text = Date
    
    End Sub
    
    1 回复  |  直到 8 年前
        1
  •  2
  •   James    9 年前

    http://vba.relief.jp/powerpoint-vba-get-active-slide-number/

    设置当前幻灯片变量的方法是
    foo = ActiveWindow.Selection.SlideRange.SlideIndex

    然后调用函数 Call slide2(slidesCount)

    Sub CreatePres()
        Dim ppApp As PowerPoint.Application
        Dim ppPres As PowerPoint.Presentation
        Dim ppSlide As PowerPoint.Slide
        Dim ppTextbox As PowerPoint.Shape
    
        Set ppApp = New PowerPoint.Application
        ppApp.Visible = True
        ppApp.Activate
    
        Set ppPres = ppApp.Presentations.Add
        slidesCount = ppPres.Slides.Count
        Set ppSlide = ppPres.Slides.Add(slidesCount + 1, ppLayoutTitle)
        ppSlide.Shapes(1).TextFrame.TextRange.Text = "Hello world"
        ppSlide.Shapes(2).TextFrame.TextRange.Text = Date
        slidesCount = ActiveWindow.Selection.SlideRange.SlideIndex
        Call slide2(slidesCount)
    End Sub
    
    Sub slide2(i As Integer)
        Set ppSlide = ppPres.Slides.Add(i + 1, ppLayoutTitle)
        ppSlide.Select
        ppSlide.Shapes(1).TextFrame.TextRange.Text = "Hello world"
        ppSlide.Shapes(2).TextFrame.TextRange.Text = Date
    End Sub