我正在尝试创建一个PowerPoint演示文稿,每张幻灯片上都有一个数字时钟,并且在转换过程中该时钟保持在同一位置。到目前为止,我已经创建了时钟,并且在幻灯片母版中创建形状后,它在“向右平移”过渡期间保持不变。我创建了一个宏,可以每分钟更新时钟的文本,效果很好。
幻灯片过渡效果不佳。在幻灯片放映过程中,每次时钟更新时,它都不会更新过渡。因此,例如,如果它是10:30,则时钟最初将显示为10:30。一旦是10:31,当幻灯片静止时,时钟文本将更新为10:31。但是,当幻灯片正在转换时,时钟会恢复为10:30。一旦是10:32,在转换过程中仍会停留在10:30。
我的猜测是,演示文稿首次启动时PowerPoint会生成幻灯片过渡,并且更新文本不会更改过渡。我尝试删除并重新添加代码中的过渡,但这似乎没有什么不同。
请注意,即使在静态的情况下,我也很难在形状上更新文本,但是我设法通过在幻灯片上上下移动形状来解决此问题,这显然是常见的解决方法。仍然不能解决过渡问题。
Sub clock()
Application.ActivePresentation.SlideMaster.Shapes(6).TextFrame.TextRange.Text = Format(Now(), "hh:mm")
'reset shape
Dim Offset As Single
Offset = ActivePresentation.PageSetup.SlideHeight + 10
Application.ActivePresentation.SlideMaster.Shapes(6).Top = Application.ActivePresentation.SlideMaster.Shapes(6).Top + Offset
Application.ActivePresentation.SlideMaster.Shapes(6).Top = Application.ActivePresentation.SlideMaster.Shapes(6).Top - Offset
'attempt to reset transition on slide 2
With ActivePresentation.Slides(2).SlideShowTransition
.EntryEffect = None
.Duration = 1.3
End With
With ActivePresentation.Slides(2).SlideShowTransition
.EntryEffect = ppEffectPanLeft
.Duration = 1.3
End With
'wait until minute incriments
Dim time As Date
nextMinute = Now()
nextMinute = DateAdd("n", 1, nextMinute)
Do Until nextMinute <= Now()
DoEvents
Loop
Call recur
End Sub
Sub recur()
Call clock
End Sub
我也知道,这可能不是让代码等到下一分钟的最佳方法,因此,如果有人有更好的主意,请告诉我。我发现的所有其他方法均无效。
Here is a download link for the presentation。
This is a duplicate of this question, but they did not manage to solve the problem there。