【问题标题】:Automatically pause a playing sound only on certain slides in a PowerPoint slide show仅在 PowerPoint 幻灯片放映中的某些幻灯片上自动暂停播放声音
【发布时间】:2018-05-01 00:20:57
【问题描述】:

我有一个带有自动前进幻灯片和背景音乐的 PowerPoint 2013 幻灯片放映。有些幻灯片是视频,我希望音乐在这些幻灯片上暂停并在之后自动恢复。我只能在一定数量的幻灯片后找到如何让音乐停止,但找不到任何关于暂停/恢复的信息。这可以通过菜单完成,还是只能通过 VBA 完成?

非常感谢。 伊利亚

【问题讨论】:

    标签: vba powerpoint slideshow


    【解决方案1】:

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

    您应该能够在没有代码的情况下执行此操作。 Power Point > 过渡选项卡 > 声音:[停止上一个声音]。

    【讨论】:

    • 我想只在特定幻灯片上暂停声音,然后恢复。一切都应该是自动的。我不知道如何使用建议的方法来做到这一点。
    【解决方案2】:

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

    您应该注意的一件事是“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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2014-07-14
      • 1970-01-01
      • 2015-12-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多