在PowerShell中从PowerPoint创建mp4

时间:2018-12-07 15:43:20

标签: powershell powerpoint

我正在从事一个需要将PowerPoint演示文稿导出为.mp4格式自动化的项目。我已经弄清楚了如何使用powershell将PowerPoint保存为.mp4格式,但是我找不到任何有关如何仅使用powershell更改幻灯片在屏幕上停留在屏幕上的秒数的文档。

当前代码:

$Application = New-Object -ComObject powerpoint.application
$Application.Visible = [Microsoft.Office.Core.MsoTriState]::msoTrue
$ThemePath = "C:\Users\Theme.potx"
$PPTXPath = "C:\Users\ExistingPresentation.pptx"
$SavePath = "C:\Users\MyPresentation.mp4"

$Presentation = $Application.Presentations.Open($ReportPath)
--Applies a theme for the slides
$Presentation.ApplyTemplate($ThemePath)
--Saves as a Video
$Presentation.SaveAs($SavePath, 39)
$Presentation.Close()

我要定位的目标是

Target

编辑:我已经在Windows PowerPoint中找到一个似乎包含可用于更改其成员的类的库的库。其中之一是“ powerpoint.application”,理论上,按照Theo的建议,以下脚本应该是可能的,尽管出现错误。

$SlideShowTransition = New-Object -ComObject powerpoint.SlideShowTransition
$SlideShowTransition.AdvanceOnTime = $True
$SlideShowTransition.AdvanceTime = 10

New-Object : Retrieving the COM class factory for component with CLSID {00000000-0000-0000-0000-000000000000} failed due to the following error: 80040154 Class not 
registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
At line:1 char:13
+ $Whatever = New-Object -ComObject powerpoint.SlideShowTransition
+             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [New-Object], COMException
    + FullyQualifiedErrorId : NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand

这是直接来自环境的另一个screenshot。由于某些原因,SlideShowTransition没有显示。我可能缺少参考...?

1 个答案:

答案 0 :(得分:0)

我认为您不应该在不使用$ Presentation的情况下创建$ SlideShowTransition,因为后者表示实际的演示文稿,否则您将无法对其进行任何设置。
请参见MS official doc上的示例如何使用ActivePresentation进行设置。
工作原理:如果在左侧搜索框中搜索ActivePresentation,则会看到它位于“应用程序”下。因此要引用它,路径是Application.ActivePresentation.Slides,然后您可以尝试Theo的方法。我认为您只有1个演示文稿处于活动状态,所以请打开。如果不是这样,您需要在文档中进行更多挖掘以激活您的$ Presentation。