出于方便展示或保护的目的,有时候我们需要将PPT导出成视频。然而无论是自带的导出功能还是诸如iSlide之类的插件,都将帧数限制到30……
emmmmmmmm,30帧的动画真的看起来很卡啊……
其实,内部编码器并没有这样的限制,利用VBA就可以做到满足强迫症的60帧视频的导出,只需要写一行代码:
Sub SaveVideo()
ActivePresentation.CreateVideo ActivePresentation.Name + ".mp4", False, 60, 1080, 60, 100
End Sub
@2022.10.25 按照正常情况,新导出的视频文件会和PPT文件处在同一目录。但是今日使用上述代码时发生软件提示导出成功但实际上找不到文件的情况,偶尔成功了一两次,这使我十分抓狂,于是加入了.Path属性进行测试,终于可以找到文件的位置了。
Sub SaveVideo()
ActivePresentation.CreateVideo ActivePresentation.Path + "\" + ActivePresentation.Name + ".mp4", False, 60, 1080, 60, 100
End Sub
运行然后等待就可以,太简单了吧……
MSDN上有关于CreateVideo函数的说明,这个函数有如下的6个参数:
- FileName,导出视频的文件路径
- UseTimingsAndNarrations,是否使用录制的计时和旁白,默认值True,详细见下图
- DefaultSlideDuration ,每张幻灯片的放映秒数,默认值5
- VertResolution,导出视频的垂直分辨率,默认值720
- FramesPerSecond,帧率,默认值30
- Quality,视频的压缩质量(0-100),默认值80
@https://blog.csdn.net/q408774831/article/details/78762062/
2022.09.09补记-将PPT导出为高像素图片
其实PPT作图的功能真的相当之强,具体可以参见(PowerPoint) 的 Presentation.Export 方法https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.presentation.export
下边是一个示例,本示例将活动演示文稿保存为 Microsoft PowerPoint 演示文稿,然后将其中的每个幻灯片导出为可移植网络图形 (PNG) 文件并保存在 Current Work 文件夹中。 本示例还将每个导出的幻灯片的高度和宽度均设为 100 像素。
With ActivePresentation
.SaveAs FileName:="c:\Current Work\Annual Sales", _
FileFormat:=ppSaveAsPresentation
.Export Path:="c:\Current Work", FilterName:="png", _
ScaleWidth:=100, ScaleHeight:=100
End With
或者两者相结合一下,如以下代码:
Sub SaveVideo()
ActivePresentation.Export Path:="E:\2022\07", FilterName:="png", _
ScaleWidth:=5000, ScaleHeight:=10000
End Sub
将导出PNG格式图片在指定文件夹中,如果只限定宽度的话则只保留width,如果只限定高度以此类推。