2

我想在 Power Point 演示文稿中添加一个计数器。有人向我提到这在 VBA 中可能是可行的。你知道这是否可以在 VBA 中完成以及如何完成?

基本上这就是我想做的事情:显示一个计数器,例如代表自我的演示开始以来租用的汽车数量。例如,开始时计数器为 0,每分钟增加 2000(这只是一个示例)。我们可以在每张幻灯片上看到柜台,所以在我的演讲结束时,人们可以看到(我会告诉他们)自从演讲开始以来,已经租用了 X(大量)汽车。

我试图在互联网上找到一些东西但没有成功......我希望有人能够帮助我吗?

4

1 回答 1

0

我给你一些想法。即使我不提供任何代码,它们也可能会有所帮助。

  1. 通常,您需要在演示文稿中使用“计时器”之类的东西,它会从您的演示文稿开始并计算所用时间。不幸的是,在 PowerPoint 中没有这样的东西。您可以使用一些外部解决方案,例如 C# COM 插件,但它相当复杂。

  2. 您可以使用 PP 应用程序事件,但汽车的价值不会每分钟都发生变化,但您输入的每张新幻灯片或任何其他事件都会触发(如反向移动等)。这有点复杂,但在我们(StackOverflow 用户)的知识范围内。

您可以在该链接下搜索或询问我曾经在哪里找到很多有趣的想法。

我承诺提供解决方案,因此即使问题已解决,我也愿意这样做。因此,我通过重新编辑我希望允许的答案来做到这一点。

  1. 我们必须确保有一个“文本框”,其中“计数值”将放置在每张幻灯片上。将以下代码添加到 Module1 并运行它。

    Sub Add_CarValue_Text()
    
    Dim SLD As Slide, SHP As Shape, shCarValue As Shape
    Dim boCarValue As Boolean
    
    For Each SLD In ActivePresentation.Slides
        For Each SHP In SLD.Shapes
            If SHP.Name = "CarValue" Then
                boCarValue = True
                Exit For
            End If
        Next
    
        If Not boCarValue Then
            Set shCarValue = SLD.Shapes.AddTextbox(msoTextOrientationHorizontal, 0, 0, 150, 50)
            With shCarValue
                .Name = "CarValue"
                .TextFrame.TextRange.Text = "Cars counter: "
            End With
    
        End If
        boCarValue = False
    Next
    End Sub
    
  2. 添加新的类模块并将下面的代码放在那里。必要时进行更改。

    Public WithEvents PPApp As Application
    
    Private TimerStart As Long
    Private Const increasePerMinute = 1000
    
    Private Sub PPApp_SlideShowBegin(ByVal Wn As SlideShowWindow)
        TimerStart = Int(Timer)
    End Sub
    
    Private Sub PPApp_SlideShowNextSlide(ByVal Wn As SlideShowWindow)
        If Not Wn.View.Slide.Shapes("CarValue") Is Nothing Then
            Dim Lap As Integer
            Lap = (Int(Timer) - TimerStart) / 10 'change for 60 to change from 10sec to 1 min
            Wn.View.Slide.Shapes("CarValue").TextFrame.TextRange = "Cars volume: " & Lap * increasePerMinute
        End If
    End Sub
    
  3. 将以下代码添加到 Module2 并运行该过程。

    Public tmpPPApp As New AppClass
    Sub StartUp()
        Set tmpPPApp.PPApp = PowerPoint.Application
    End Sub
    
  4. 开始您的演示。

重要的!如果您更改代码中的任何内容,请再次运行第 3 步。此外,为了以防万一,您需要在午餐演示文稿之前运行程序 3。

于 2013-03-15T09:45:39.163 回答