【问题标题】:Powerpoint Slide Count Variable in VBAVBA中的Powerpoint幻灯片计数变量
【发布时间】:2017-07-29 23:58:33
【问题描述】:

我正在 vba 中创建一个 Powerpoint。我的计划是设置代码,以便每个子例程创建特定的幻灯片。但是,我需要将幻灯片编号传递给每个子例程,以便它在正确的位置创建正确的幻灯片。我无法在 excel vba 中定义 .Slides.Count 是什么。我知道它在技术上是一个 Long,但不知何故,我能够在另一个不再工作的代码补丁中将它作为整数传递。

我的问题是:

  1. .Slides.Count 函数。这在技术上是 Long 还是 Integer。如果是 Long,为什么要这样定义?是因为整数有上限,而 long 没有吗?

  2. 我应该如何将 .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

【问题讨论】:

  • Slides.Count 是 Long,但您没有在代码中将 slidesCount 变暗,因此 VBA 可能将其视为 Variant。始终将 Option Explicit 作为任何 VB/VBA 模块的第一行;这将迫使您在使用变量之前正确调暗变量。为什么长?据我了解,这是因为 Longs 比 Integers 更有效。另外,请注意您不需要在 Sub Slide2 中使用 ppSlide.Select。

标签: excel count powerpoint long-integer vba


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-15
    • 2019-05-07
    相关资源
    最近更新 更多