通过vbscript添加PowerPoint动画始终会导致;海关;动画

通过vbscript添加PowerPoint动画始终会导致;海关;动画,vbscript,powerpoint,Vbscript,Powerpoint,我正在尝试使用vbscript自动创建PowerPoint演示文稿。原因是我有一个文件夹,里面有几十张png图像,我需要将它们插入同一张幻灯片的同一位置。它们都是透明的,形成一个大图像。但是,我需要一个接一个地显示,直到完整的图像显示出来。因此,我没有手工操作,而是使用以下vbscript: Set powerPointApp = CreateObject("PowerPoint.Application") Set fileSystem = CreateObject("Scripting.

我正在尝试使用vbscript自动创建PowerPoint演示文稿。原因是我有一个文件夹,里面有几十张png图像,我需要将它们插入同一张幻灯片的同一位置。它们都是透明的,形成一个大图像。但是,我需要一个接一个地显示,直到完整的图像显示出来。因此,我没有手工操作,而是使用以下vbscript:

Set powerPointApp = CreateObject("PowerPoint.Application")
Set fileSystem    = CreateObject("Scripting.FileSystemObject")
Set presentation  = powerPointApp.Presentations.Add()

presentation.PageSetup.SlideSize        = 15 '15 is the enum value of the enum for 16:9, see http://stackoverflow.com/questions/21598090/how-to-change-powerpoint-pictures-in-widescreen-format
presentation.PageSetup.FirstSlideNumber = 1
presentation.PageSetup.NotesOrientation = msoOrientationHorizontal

Set presentationSlide = presentation.Slides.Add(1, 12)

For Each file In fileSystem.GetFolder("C:\Temp\Images").Files
  If InStr(1, file.Name, "Partial_Image", 1) = 1 Then
    Set picture = presentationSlide.shapes.AddPicture(file.path, True, True, 0, 0)
    Set effect  = presentationSlide.TimeLine.MainSequence.AddEffect(picture, msoAnimEffectFade)
    'Set effect  = presentationSlide.TimeLine.MainSequence.AddEffect(picture, msoAnimEffectFade, msoAnimationLevelNone, msoAnimTriggerAfterPrevious, -1)
  End if
Next

presentation.SaveAs("C:\Temp\test.pptx")
presentation.Close
powerPointApp.Quit
因此,当我运行脚本时,它将打开PowerPoint,创建新的PowerPoint演示文稿,更改其设置并添加新幻灯片。然后,它遍历C:\Temp\Images中的文件,如果在文件名中找到包含“Partial_image”的图像,它会将该图像插入到新幻灯片中。此筛选是必需的,因为文件夹包含我不想插入的文件。之后,它会将“淡入”入口动画添加到插入的每个图像中

现在有趣的是,这实际上是可行的,也就是说,我最终得到了一个新的PowerPoint演示文稿,里面确实有动画图像。但是,不是显示每个图像使用“淡入”入口动画,而是显示它使用“自定义”入口动画:


因此,无论我如何更改语句以插入动画(“AddEffect”调用),我总是以“Custom”结束,而不是以实际目标动画结束。最后的动画效果很好,也就是说,我得到了想要的效果,但它只是告诉我这是一个自定义动画。有人知道为什么会这样吗?实际查看所使用的动画类型会很有帮助。

您的上下文似乎不知道枚举值
msoanimfeffectfade
,并返回到默认值

您可能知道,您也可以使用要使用的枚举的int值。在您的情况下,这将是
10
(请参阅)

这将导致以下变化:

Set effect  = presentationSlide.TimeLine.MainSequence.AddEffect(picture, 10)

这样,动画将正确设置为“淡入淡出”。谢谢