【问题标题】:Programmatically add sound effects to the soundeffect library in a PowerPoint presentation以编程方式将音效添加到 PowerPoint 演示文稿中的音效库
【发布时间】:2020-07-02 23:11:30
【问题描述】:

我希望能够超链接文本对象中的子字符串并为其分配独特的声音。当我使用以下代码时,我可以使用 soundeffect.name 属性来播放内置的“激光”声音。

Set retrange = .Characters(sl, strlen)
 With retrange
     With .ActionSettings(ppMouseOver)
              .Hyperlink.Address = ""
              .Hyperlink.SubAddress = cursld
              .Hyperlink.ScreenTip = arrTwoD(i, 4)
              .SoundEffect.Name = "laser"
     End With
End With

我希望能够以编程方式将声音添加到内置演示库中,这样除了存在的默认声音(例如“激光”、“掌声”、“钟声”)之外,我可以引用添加(例如“my_sound1”、“my_sound2”、“my_sound3”等):

Set retrange = .Characters(sl, strlen)
 With retrange
     With .ActionSettings(ppMouseOver)
              .Hyperlink.Address = ""
              .Hyperlink.SubAddress = cursld
              .Hyperlink.ScreenTip = arrTwoD(i, 4)
              .SoundEffect.Name = "my_sound1"
     End With
End With

这可以在设置超链接时在交互式PP界面中完成,但我希望能够以编程方式完成。

谢谢。

【问题讨论】:

    标签: vba powerpoint


    【解决方案1】:

    您不能将任何声音添加到内置库中。但是,使用 ImportFromFile 方法添加的任何声音都可用于 演示。添加的任何自定义声音随后将可用于演示,然后您可以使用 Name 属性。

    With txRng1.ActionSettings(ppMouseClick) .Hyperlink.Address = "www.microsoft.com" .ImportFromFile("c:\path\my_custom_sound.wav" End With

    With TxRng2.ActionSettings(ppMouseClick) .Hyperlink.Address = "www.anothersite.com" .SoundEffect.Name = "my_custom_sound.wav" End With

    【讨论】:

    • .ImportFromFile("c:\path\my_custom_sound.wav" 中的小错字应该是 .ImportFromFile "c:\path\my_custom_sound.wav"
    【解决方案2】:

    我厌倦了您过去建议的代码,发生的情况是我收到一个运行时错误,指出“对象 'SoundEffect' 的方法 'ImportFromFile' 失败”。这就是为什么我想保留我的代码,因为它目前是结构化的,我可以首先添加所需的声音,然后以我建议的方式引用它。

    再一次,我的代码与现有的声音(例如“激光”)一起工作得非常好,而且很简单。如果我可以提前以编程方式添加声音,那就解决了我的问题。我想既然我可以在 PP 中交互地添加这些声音,我应该能够编写代码来做到这一点。

    交互过程是这样的:插入-->动作-->播放声音-->[这是默认声音像“激光”出现的地方]

    “其他声音……”出现在列表的底部,这是我可以添加自己的声音的地方 [例如c:\my_sound1])

    【讨论】:

    • "如果我可以提前以编程方式添加声音......" 但正如 Shyam 指出的那样,你不能。
    【解决方案3】:

    Shyam 提供了正确的方法来重现您作为编程方法提到的 PowerPoint 播放声音 UI 的 Other Sound... 部分,因此您需要找出为什么你得到一个错误。我在商业插件中使用了 ImportFromFile 方法,所以知道它有效。 2016 年 16 位版本的内置 MSO 声音存储在此处:

    C:\Program Files (x86)\Microsoft Office\root\Office16\MEDIA

    您可以通过将自定义 wav 文件复制到此文件夹(或您的 PowerPoint 版本的类似文件夹)并检查它是否未出现在 PowerPoint UI 中(即使在重新启动后)来确认无法添加到此库PowerPoint 或重新启动 Windows)。如果您从该文件夹中删除一个 wav 文件,它也不会从 UI 列表中删除。这些文件也不会出现在注册表中,因此所有这些都指向 Windows 中媒体库的硬编码。

    在我的编程测试中,我将 laser.wav 文件重命名为 mylaser.wav,然后在 PowerPoint 中选择了一个形状,我在立即窗口成功添加自定义音效:

    ActiveWindow.Selection.ShapeRange.ActionSettings(ppMouseClick).SoundEffect.ImportFromFile _
    "C:\Program Files (x86)\Microsoft Office\root\Office16\MEDIA\mylaser.wav"
    

    插入后,设置这些 SoundEffect 属性:

    .Name = mylaser.wav
    .Type = ppSoundFile
    

    请注意,即使文件不存在,我也没有触发错误,但在这种情况下,幻灯片放映期间不会按预期播放声音。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-03
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      相关资源
      最近更新 更多