仅在PowerPoint幻灯片放映中的某些幻灯片上自动暂停播放声音

时间:2017-11-17 09:14:26

标签: vba powerpoint slideshow

我有一个PowerPoint 2013幻灯片,可以自动推进幻灯片和背景音乐。一些幻灯片是视频,我希望音乐在这些幻灯片中暂停并在之后自动恢复。我只能找到如何在一定数量的幻灯片后停止播放音乐,但无法找到有关暂停/恢复的信息。这可以通过菜单完成,还是仅通过VBA实现?

非常感谢。 Iliya

2 个答案:

答案 0 :(得分:1)

如果您找不到任何解决方案, 你可以尝试一些VBA,使用" MCISendString",来自winmm.dll的外部API函数。

您应该注意的一件事是,在' fileToPlay'中不能有任何空格字符。串。 您可以使用另一个名为OnSlideShowPageChange的函数自动播放和恢复播放音频。

#If VBA7 Then
    Declare PtrSafe Function mciSendString Lib "winmm.dll" Alias _
    "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
    lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long
#Else
    Declare Function mciSendString Lib "winmm.dll" Alias _
    "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
    lpstrReturnString As Any, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

#End If

Sub OnSlideShowPageChange(SSW As SlideShowWindow)

    Dim fileToPlay As String
    Dim MCIAudio As Long

    fileToPlay = Chr(34) & ActivePresentation.Path & "\test.mp3" & Chr(34)

    Select Case SSW.View.CurrentShowPosition
        Case 1:
            'first, close the previous playing and open new and play
            MCIPlay = mciSendString("close MyAudio", Nothing, 0, 0)
            MCIAudio = mciSendString("open " & fileToPlay & " alias MyAudio", Nothing, 0, 0)
            MCIAudio = mciSendString("play MyAudio", Nothing, 0, 0)
        Case 2:
            MCIAudio = mciSendString("pause MyAudio", Nothing, 0, 0)
        Case 3:
            MCIAudio = mciSendString("resume MyAudio", Nothing, 0, 0)
        Case 4:
            MCIAudio = mciSendString("stop MyAudio", Nothing, 0, 0)
    End Select
End Sub

Sub OnSlideShowTerminate()
    Dim MCIAudio As Long

    MCIAudio = mciSendString("stop MyAudio", Nothing, 0, 0)
    MCIAudio = mciSendString("close MyAudio", Nothing, 0, 0)
End Sub

在这个例子中, 在幻灯片1上,开始播放。 在幻灯片2上,暂停播放。 在幻灯片3上,继续播放。 在幻灯片4上,停止播放。 幻灯片放映结束后,停止播放。

(你知道,OnSlideShowPageChange有时无法启动。 如果那时,只需在第一张幻灯片上插入任何Active-X控件, 这是一个已知的解决方法。)

可在此处找到其他MCISendString命令: https://msdn.microsoft.com/en-us/library/ms710815.aspx

答案 1 :(得分:0)

您可以查看此Link以获得更多问题的答案。

你应该能够在没有代码的情况下做到这一点。 Power Point> “转换标签”>声音:[停止上一个声音]。

Explanation Image