首页 文章

VBA中的Powerpoint幻灯片计数变量

提问于
浏览
1

我正在vba中创建一个Powerpoint . 我的计划是设置代码,使每个子程序创建一个特定的幻灯片 . 但是,我需要将幻灯片编号传递给每个子程序,以便在正确的位置创建正确的滑块 . 我无法定义.slides.Count在excel vba中的含义 . 我知道它在技术上是一个很长的,但不知何故,我能够在另一个不再有效的代码补丁中将它作为一个整数传递 .

我的问题是:

  • .Slides.Count函数 . 这在技术上是长期还是整数 . 如果它是一个龙,为什么这样定义?是因为整数有一个上限而多头没有?

  • 如何将.Slides.Count变量传递到创建新幻灯片的子例程中?作为整数还是长?

我有一些示例代码:

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 回答

  • -1

    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
    

相关问题