0

我有兴趣使用 powerpoint 创建一个幻灯片,如果有新的一天或时间(午夜),它将只在形状中显示一个新数字。我知道 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

正在考虑进行连续循环,因为文件将始终打开并且永远不会关闭。

或者我应该使用计时器来倒计时一天中的秒数然后增加数字吗?

4

2 回答 2

0

与 Excel 不同,PowerPoint 没有在OnTimer此有用的内容。

仅仅做一个循环将导致 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 回答
0

您可以将其包含在演示文稿的模块中。在幻灯片放映期间,它会在每次幻灯片更改时触发:

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

显然,将 MsgBox 语句替换为代码以使用当前日期/时间更新您的文本。

这适用于 PPT 2010,并且应该可以追溯到 Office 97,但没有记录/支持,因此 MS 可能会在他们一时兴起时将其删除。我不知道它是否适用于Mac上的PPT。

于 2012-10-02T14:41:39.740 回答