我想知道,ppt中是否有可以通过VBA中的"AddMediaObject2"导入的最大视频数量?如果我试图用以下宏导入几个视频(这是一个伪版本,只是为了显示问题),我会遇到一个奇怪的错误:
Sub loadVideos()
Const path As String = "D:video.avi"
For folder = 1 To 20
Debug.Print "folder: " & folder
Dim sld As Slide
Set sld = ActivePresentation.Slides.Add(ActivePresentation.Slides.count + 1, ppLayoutTitleOnly)
sld.Select
For i = 1 To 8
Dim oShp As Shape
Set oShp = sld.Shapes.AddMediaObject2(FileName:=(path), _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=0, _
Top:=0, _
Width:=-1, _
Height:=-1)
Next i
Next folder
结束子
它可以像预期的那样与较小的视频文件一起工作(所以代码应该没问题!?)但我得到了错误
"运行时错误-214。。。。Shapes.AddMediaObject2:请求无效,PowerPoint无法插入所选文件中的任何视频。检查是否安装了此媒体格式所需的编解码器,然后重复此过程。"
如果我将其用于较大的视频,或者增加每张幻灯片上的视频数量或包含视频的幻灯片数量。我怀疑这与视频编解码器有关,因为手动插入视频效果很好,而且到目前为止插入的视频(直到错误发生)也很好。我还检查了RAM并没有被所有这些插入的视频完全填满。所以我认为ppt中可能存在一些内部堆栈或缓存内存问题。可以在ppt中加载的媒体文件的数量或大小有任何限制吗?
如果有人能告诉我这可能是ppt中的某个错误,或者可以指出某种补救措施,我将不胜感激。也许我可以配置ppt以接受更多/更大的视频?
非常感谢。
同样的情况对我来说,我只能添加8个mpg文件(已安装编解码器的regardles)。解决方案是在添加单个文件(上面的示例代码)后打开和关闭演示
ps将mpg转换为avi方法后效果良好。。。
For Each myBrand In Brands
Set ReturnPPPresentation = PptApp.Presentations.Open(tmpPresenationPath, withwindow:=msoFalse)
Set mySlajd = PPTTemplate.Slides(2).Duplicate
With mySlajd
Set shp = .Shapes.AddMediaObject2(myBrand.MultimediaPath, msoFalse, msoTrue, 218, 118.22, 384.71, 211.77)
Set shp = Nothing
End With
ReturnPPPresentation.Save
ReturnPPPresentation.Close
Next myBrand