通过 vbscript 添加 PowerPoint 动画总是导致 "Custom" 动画
Adding PowerPoint animations via vbscript always results in "Custom" animation
我正在尝试使用 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
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" 的图像,它将将该图像插入到新幻灯片中。这种过滤是必要的,因为该文件夹包含我不想插入的文件。之后,它会为插入的每个图像添加 "Fade" 入口动画。
现在有趣的是这确实有效,即我最终得到了一个新的 PowerPoint 演示文稿,里面确实有动画图像。但是,它没有显示每个图像都使用 "Fade" 入口动画,而是显示它使用 "Custom" 入口动画:
因此,无论我如何更改语句以插入动画("AddEffect" 调用),我总是以 "Custom" 而不是我实际定位的动画结束。最后的动画有效,即我得到了想要的效果,但它只是告诉我这是一个自定义动画。有谁知道为什么会这样?实际查看所使用的动画类型会很有帮助。
您的上下文似乎不知道枚举值 msoAnimEffectFade
并回退到默认值。
您可能知道您还可以使用要使用的枚举的 int 值。在您的情况下,这将是 10
(参见 MSDN)。
这将导致以下变化:
Set effect = presentationSlide.TimeLine.MainSequence.AddEffect(picture, 10)
我正在尝试使用 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
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" 的图像,它将将该图像插入到新幻灯片中。这种过滤是必要的,因为该文件夹包含我不想插入的文件。之后,它会为插入的每个图像添加 "Fade" 入口动画。
现在有趣的是这确实有效,即我最终得到了一个新的 PowerPoint 演示文稿,里面确实有动画图像。但是,它没有显示每个图像都使用 "Fade" 入口动画,而是显示它使用 "Custom" 入口动画:
因此,无论我如何更改语句以插入动画("AddEffect" 调用),我总是以 "Custom" 而不是我实际定位的动画结束。最后的动画有效,即我得到了想要的效果,但它只是告诉我这是一个自定义动画。有谁知道为什么会这样?实际查看所使用的动画类型会很有帮助。
您的上下文似乎不知道枚举值 msoAnimEffectFade
并回退到默认值。
您可能知道您还可以使用要使用的枚举的 int 值。在您的情况下,这将是 10
(参见 MSDN)。
这将导致以下变化:
Set effect = presentationSlide.TimeLine.MainSequence.AddEffect(picture, 10)