我给你一些想法。即使我不提供任何代码,它们也可能会有所帮助。
通常,您需要在演示文稿中使用“计时器”之类的东西,它会从您的演示文稿开始并计算所用时间。不幸的是,在 PowerPoint 中没有这样的东西。您可以使用一些外部解决方案,例如 C# COM 插件,但它相当复杂。
您可以使用 PP 应用程序事件,但汽车的价值不会每分钟都发生变化,但您输入的每张新幻灯片或任何其他事件都会触发(如反向移动等)。这有点复杂,但在我们(StackOverflow 用户)的知识范围内。
您可以在该链接下搜索或询问我曾经在哪里找到很多有趣的想法。
我承诺提供解决方案,因此即使问题已解决,我也愿意这样做。因此,我通过重新编辑我希望允许的答案来做到这一点。
我们必须确保有一个“文本框”,其中“计数值”将放置在每张幻灯片上。将以下代码添加到 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
添加新的类模块并将下面的代码放在那里。必要时进行更改。
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
将以下代码添加到 Module2 并运行该过程。
Public tmpPPApp As New AppClass
Sub StartUp()
Set tmpPPApp.PPApp = PowerPoint.Application
End Sub
开始您的演示。
重要的!如果您更改代码中的任何内容,请再次运行第 3 步。此外,为了以防万一,您需要在午餐演示文稿之前运行程序 3。