如何为PowerPoint每张幻灯片添加不同旁白音频?VBA实现相关咨询
PowerPoint VBA 批量添加幻灯片旁白音频方案
核心对象说明
你搜索不到对应音频操作对象的原因是,PowerPoint VBA 中音频、视频等媒体资源统一通过 Shapes.AddMediaObject2 方法插入,插入后的音频归属于 Shape 对象,播放相关属性由其子对象 MediaFormat 控制。
前置准备
- 所有旁白音频按幻灯片序号统一命名,规则为
slide+序号,如第一页音频命名为slide1.mp3、第二页为slide2.mp3,依此类推 - 把所有命名完成的音频存放在同一个本地文件夹内,记住文件夹完整路径
- 打开目标PPT文件,按
Alt+F11调出VBA编辑器,右键点击左侧工程列表中你的PPT名称,选择「插入」-「模块」
批量插入代码
将以下代码粘贴到新建的模块中,修改audioFolderPath变量为你存放音频的文件夹路径,按F5运行即可:
Sub 批量添加幻灯片旁白() Dim curSlide As Slide Dim audioFilePath As String Dim audioFolderPath As String ' 此处替换为你的音频文件夹路径,末尾必须加反斜杠 audioFolderPath = "C:\PPT_旁白音频\" For Each curSlide In ActivePresentation.Slides ' 匹配当前幻灯片对应音频,可修改.mp3为你的音频格式后缀(.wav/.wma等) audioFilePath = audioFolderPath & "slide" & curSlide.SlideIndex & ".mp3" ' 仅当对应音频文件存在时执行插入 If Dir(audioFilePath) <> "" Then ' 插入音频到当前幻灯片 Call curSlide.Shapes.AddMediaObject2( _ FileName:=audioFilePath, _ LinkToFile:=msoFalse, _ SaveWithDocument:=msoTrue, _ Left:=0, Top:=0, Width:=10, Height:=10) ' 配置音频播放规则 With curSlide.Shapes(curSlide.Shapes.Count).MediaFormat .PlayOnEntry = msoTrue ' 进入当前幻灯片自动播放 .Volume = 0.75 ' 音量大小,取值范围0到1 End With ' 隐藏幻灯片上的音频图标,不需要隐藏可删除此行 curSlide.Shapes(curSlide.Shapes.Count).Visible = msoFalse End If Next curSlide MsgBox "所有存在匹配音频的幻灯片旁白已添加完成" End Sub
常见自定义调整项
- 若需要音频跨多页播放,可在
MediaFormat配置块中添加代码.EndingSlide = 5,数字改为你需要音频停止的幻灯片序号即可 - 若需要音频循环播放,可在
MediaFormat配置块中添加代码.LoopUntilStopped = msoTrue - 若需要显示音频图标,直接删除设置
Visible = msoFalse的代码行即可
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

