Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA从Powerpoint演示文稿导出嵌入式视频_Vba_Video_Export_Powerpoint_Extract - Fatal编程技术网

VBA从Powerpoint演示文稿导出嵌入式视频

VBA从Powerpoint演示文稿导出嵌入式视频,vba,video,export,powerpoint,extract,Vba,Video,Export,Powerpoint,Extract,我试图将整个演示转换为HTML,提取所有嵌入的内容等。我有文本、音频、旁白等,一切都很好,但我很难找到如何导出视频内容 我在演示文稿中循环浏览所有幻灯片,然后浏览幻灯片上的所有形状,寻找msoMedia类型的形状。如果我找到一个,那么我会检查它的MediaType。如果是ppMediaTypeMovie,那么我可以使用Shape.LinkFormat.SourceFullName找到外部链接视频文件的源文件,但我一辈子都找不到如何访问嵌入内容 如果我发现一个形状的MediaType为ppMedi

我试图将整个演示转换为HTML,提取所有嵌入的内容等。我有文本、音频、旁白等,一切都很好,但我很难找到如何导出视频内容

我在演示文稿中循环浏览所有幻灯片,然后浏览幻灯片上的所有形状,寻找
msoMedia
类型的形状。如果我找到一个,那么我会检查它的
MediaType
。如果是
ppMediaTypeMovie
,那么我可以使用
Shape.LinkFormat.SourceFullName
找到外部链接视频文件的源文件,但我一辈子都找不到如何访问嵌入内容


如果我发现一个形状的
MediaType
ppMediaTypeSound
,那么我可以使用
shape.SoundFormat.Export
导出音频。有人知道视频形状的等价物吗?(没有
Shape.VideoFormat
)我花了好几天的时间查看了所有可能的数据成员,但都没有结果。

注意:您可能会发现.Export方法在最近的PPT版本中也不适用于嵌入式声音


亚历克斯的建议是我首先考虑的;否则,您可以解压缩PPTX/PPSX/etc并在媒体文件夹中查找视频。或者您可以尝试保存为XML演示文稿;您可能可以从中解析视频。

看起来Microsoft仍将媒体文件的内容提取到临时文件夹中,而嵌入式视频仍然为提取的视频提供LinkFormat.SourceFullName:

?oshape.LinkFormat.SourceFullName

C:\Users\Alex\AppData\Local\Microsoft\Windows\Temporary Internet Files\Content.MSO\F26FF1D0.m4v

我所需要做的就是通过ffmpeg发送这个文件,然后我得到了我想要的格式的视频


感谢您的帮助:)

如果无法使用Windows剪贴板直接访问视频数据,可能会有所帮助。请参见Office2007中的导出工作正常。如何使用VBA解压?我避免使用Shell,因为几乎不可能找到要查找的应用程序的可执行文件名(winzip?winrar?winace?7zip?等)。导出导出形状的图像。适用于图像、图表、表格等。Shape.SoundFormat.Export将音频剪辑导出为简单的wav(然后将其发送到ffmpeg进行转换)。为什么微软会提供这些方法以编程方式提取图像和声音,而选择不使用视频?一定有正确的方法!如果我以编程方式解压和浏览ppt/media文件夹的内容,我如何知道哪个媒体文件属于哪个幻灯片/形状?从我(有限)的测试来看,媒体文件似乎是按顺序编号的(media1.avi、media2.wmv等),所以你需要一步一步地浏览每张幻灯片,通过每张幻灯片上的每个形状,将每个媒体对象添加到集合或阵列中;“media”&cstr(数组索引)将在zip中为您提供媒体文件的名称;扩展名将与原始文件的扩展名相同,因此您必须查找例如.avi、.wmv等,或者任何基名称与您所要查找的文件(即media3.*)。使用VBA解压:同意使用外壳进行解压不是最好的方法。我认为7zip可能会将方法暴露给COM控制。还有其他的zip/unzip库也可以完成这项工作。Google Info-Zip和Advanced-Zip Library提供了一些初始想法。感谢Steve:)不幸的是,在幻灯片上迭代形状的顺序似乎并不一致。我发现我的输出并不总是相同的,即使在同一演示文稿上连续运行两次脚本。(我没有费心研究这个,所以不要引用我的话:))