私はあなたにいくつかのアイデアを与えます。コードを提供しなくても、おそらく役立つでしょう。
一般に、プレゼンテーションに「タイマー」のようなものが必要です。これは、プレゼンテーションから始まり、使用時間をカウントします。残念ながら、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 を実行する必要があります。