在Power Point演示文稿中添加计数器

时间:2013-03-15 08:19:57

标签: counter powerpoint-vba

我想在功率点演示中添加一个计数器。有人告诉我,这在VBA中可能是可行的。你知道这是否可以在VBA中完成吗?

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

  3. 您可以根据link搜索或询问我曾经找到很多有趣想法的地方。

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

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

      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. 开始演示。

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