0

新しい日または時間 (真夜中) がある場合に新しい数字をシェイプに表示するだけのスライドをパワーポイントで作成することに興味があります。Java プログラミングは知っていますが、6 年以上プログラミングを行っていません。私はVBを実際に使用したことがありません。

Dim CurrentTime = TimeValue(now)

Sub If CurrentTime.Now = TimeValue(24:00:00)
 Then updateNum;
      i = i+1

'Then I would like to display 'i' in a shape on powerpoint.

End Sub

ファイルは常に開いており、決して閉じないため、連続ループを実行することを考えていました。

または、タイマーを使用して 1 日の秒数をカウントダウンしてから、数値をインクリメントする必要がありますか?

4

2 に答える 2

0

これをプレゼンテーションのモジュールに含めることができます。スライドショー中のスライドの変更ごとに起動します。

Sub OnSlideShowPageChange(ByVal SSW As SlideShowWindow)
  MsgBox (SSW.View.Slide.SlideIndex)
End Sub

明らかに、MsgBoxステートメントをコードに置き換えて、テキストを現在の日付/時刻に更新します。

これはPPT2010で機能し、Office 97までさかのぼって機能するはずですが、文書化/サポートされていないため、気まぐれが発生するたびにMSが削除する可能性があります。MacのPPTで動作するかどうかはわかりません。

于 2012-10-02T14:41:39.740 に答える
0

OnTimerExcel とは異なり、PowerPoint には、ここで役立つ機能がありません。

ループを作成するだけで、100% のプロセッサ消費が発生します。あなたはおそらくそれを望んでいません。

Sleep()各反復で呼び出しを行うと、プロセッサ時間は節約されますが、アプリケーションは無責任になります。あなたもおそらく望んでいないこと。

そのため、タイマーを設定する必要があります。VSTO アドインを作成しても問題ない場合は、Timer クラスを使用します。それ以外の場合は、VBA で自分で作成します。

Option Explicit

Private Declare Function SetTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32.dll" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long

Private hTimer As Long
Private PrevDate As Date

Public Sub StartTimer()
  If hTimer = 0 Then
    hTimer = SetTimer(0, 0, 1000, AddressOf TimerProc)
  End If
End Sub

Public Sub StopTimer()
  KillTimer 0, hTimer
  hTimer = 0
End Sub


Private Sub TimerProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal nIDEvent As Long, ByVal dwTime As Long)
  Dim CurDate As Date

  CurDate = Date
  If CurDate > PrevDate Then
    PrevDate = CurDate
    'Put your display code here
  End If
End Sub
于 2012-09-30T16:18:36.377 に答える