使用VBA重置PowerPoint过渡

时间:2018-07-09 16:47:30

标签: vba powerpoint powerpoint-vba

我正在尝试创建一个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

0 个答案:

没有答案