以编程方式将声音效果添加到PowerPoint演示文稿中的soundeffect库

时间:2016-09-08 16:40:19

标签: powerpoint-vba

我希望能够超链接文本对象中的子字符串并为其分配唯一的声音。当我使用下面的代码时,我可以使用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

我希望能够以编程方式将声音添加到内置演示文稿库中,这样除了那里的默认声音(例如“激光”,“鼓掌”,“编钟”)之外,声音我可以引用add(例如“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界面中完成,但我希望能够以编程方式进行。

感谢。

3 个答案:

答案 0 :(得分:0)

您无法将任何声音添加到内置库中。但是,使用 ImportFromFile 方法添加的任何声音都可用于那个演示。添加的任何自定义声音随后都可用于演示文稿,然后您可以使用名称属性。

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

答案 1 :(得分:0)

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

再一次,我的代码可以很好地使用现有的声音(例如“激光”)。如果我可以提前以编程方式添加声音,那就解决了我的问题。我想因为我可以在PP中以交互方式添加这些声音,所以我应该能够编写代码来实现这一点。

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

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

答案 2 :(得分:0)

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

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

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