Vbscript 如何以编程方式打开Powerpoint而不查看窗口?

Vbscript 如何以编程方式打开Powerpoint而不查看窗口?,vbscript,ms-office,powerpoint,msdn,Vbscript,Ms Office,Powerpoint,Msdn,我有这个脚本,由另一个用户制作 它打开输入文件,将其转换为.pdf格式,并将其另存为输出文件 但是,PowerPoint也会打开,我看到实际的窗口加载 这个过程将在服务器上运行,因此我认为每次用户想要转换某些内容时加载GUI都会占用不必要的资源 有没有办法在不弹出GUI的情况下以编程方式打开PowerPoint 我试着换了 objPPT.Visible=Truewith objPPT.Visible=False 但这就产生了一个错误,告诉我不可能是那样的 我也试过更换 objPPT.Prese

我有这个脚本,由另一个用户制作

它打开输入文件,将其转换为.pdf格式,并将其另存为输出文件

但是,PowerPoint也会打开,我看到实际的窗口加载

这个过程将在服务器上运行,因此我认为每次用户想要转换某些内容时加载GUI都会占用不必要的资源

有没有办法在不弹出GUI的情况下以编程方式打开PowerPoint


我试着换了

objPPT.Visible=True
with

objPPT.Visible=False

但这就产生了一个错误,告诉我不可能是那样的

我也试过更换

objPPT.Presentations.Open inputFile

objPPT.Presentations.Open inputFile、、msoFalse

但这给了我一个错误的说法:

Microsoft PowerPoint 2013:Application.ActivePresentation:无效 要求没有活动的演示文稿


该错误从
Set objPresentation=objPPT.ActivePresentation
行触发


通过对这一课题的研究,我发现有些人通过 使用

第四个参数是
WithWindow
。从理论上讲,如果设置为false,则应该在没有窗口的情况下打开演示文稿

但不管我对它做什么似乎都不起作用

WithWindow:=false
给了我一个语法错误


superuser.com的礼节性账单第3页 选项显式 子写入线(strLine) WScript.Stdout.WriteLine strLine 端接头 ' http://msdn.microsoft.com/en-us/library/office/aa432714(v=办公室12)aspx 常量msoFalse=0'错误。 常量msoTrue=-1'为真。 ' http://msdn.microsoft.com/en-us/library/office/bb265636(v=办公室12)aspx Const ppFixedFormatIntentScreen=1'目的是在屏幕上查看导出的文件。 Const ppFixedFormatIntentPrint=2'目的是打印导出的文件。 ' http://msdn.microsoft.com/en-us/library/office/ff746754.aspx 常量ppFixedFormatTypeXPS=1'XPS格式 常量ppFixedFormatTypePDF=2'PDF格式 ' http://msdn.microsoft.com/en-us/library/office/ff744564.aspx Const ppPrintHandoutVerticalFirst=1'幻灯片垂直排列,第一张幻灯片在左上角,第二张幻灯片在左下角。 Const ppPrintHandAuthorizontalFirst=2'幻灯片水平排列,第一张幻灯片在左上角,第二张幻灯片在右上角。 ' http://msdn.microsoft.com/en-us/library/office/ff744185.aspx 常量ppPrintOutputSlides=1'幻灯片 Const ppPrintOutputWOSlideHandouts=2'两张幻灯片讲义 常量PPPrintOutputThreeSlidesHandouts=3'三张幻灯片讲义 常量ppPrintOutputSixSlideHandouts=4'六张幻灯片讲义 常量ppPrintOutputNotesPages=5'注释页 常量ppPrintOutputOutline=6'轮廓 Const ppPrintOutputBuildSlides=7'生成幻灯片 常量ppPrintOutputFourSlideHandouts=8'四张幻灯片讲义 常量PPPrintOutputNinesSlide讲义=9'九张幻灯片讲义 常量PPPrintOutputneslideHandouts=10'单幻灯片讲义 ' http://msdn.microsoft.com/en-us/library/office/ff745585.aspx Const ppPrintAll=1'打印演示文稿中的所有幻灯片。 Const ppPrintSelection=2'打印幻灯片选择。 Const ppPrintCurrent=3'打印演示文稿中的当前幻灯片。 Const ppPrintSlideRange=4'打印一系列幻灯片。 Const ppPrintNamedSlideShow=5'打印命名幻灯片。 ' http://msdn.microsoft.com/en-us/library/office/ff744228.aspx 常量ppShowAll=1'全部显示。 Const ppShowNamedSlideShow=3'显示名为slideshow的内容。 常量ppShowSlideRange=2'显示幻灯片范围。 ' '这是实际的脚本 ' Dim输入文件 Dim输出文件 模糊对象 模糊表示 Dim OBJPRINT选项 Dim objFso 如果WScript.Arguments.Count为2,则 WriteLine“您需要指定输入和输出文件。” WScript.Quit 如果结束 inputFile=WScript.Arguments(0) outputFile=WScript.Arguments(1) 设置objFso=CreateObject(“Scripting.FileSystemObject”) 如果不存在objFso.FileExists(inputFile),则 WriteLine“找不到您的输入文件”&inputFile WScript.Quit 如果结束 如果存在objFso.files(outputFile),则 “WriteLine”您的输出文件(“&outputFile&”)已存在 'WScript.Quit 如果结束 WriteLine“输入文件:”&输入文件 WriteLine“输出文件:”&输出文件 设置objPPT=CreateObject(“PowerPoint.Application”) objPPT.Visible=True objPPT.Presentations.Open inputFile 设置objPresentation=objPPT.ActivePresentation 设置objPrintOptions=objPresentation.PrintOptions objPrintOptions.Ranges.Add 1,objPresentation.Slides.Count objPrintOptions.RangeType=ppShowAll "这方面的参考http://msdn.microsoft.com/en-us/library/office/ff746080.aspx objPresentation.ExportAsFixedFormat输出文件、ppFixedFormatTypePDF、ppFixedFormatIntentScreen、msoTrue、PPPrintHandoutAuthorizontalFirst、ppPrintOutputSlides、msoFalse、objPrintOptions.Ranges(1)、ppPrintAll、“幻灯片放映名称”、False、False、False、False、False、False 对象表示。关闭 退出
我发现了OpenXML,我正在研究它

objPPT.Presentations.Open inputFile,,msoFalse
它需要另一个逗号

objPPT.Presentations.Open inputFile,,,msoFalse
PARM是:

Presentations.Open "filename", boolReadOnly, boolOpenUntitled, boolWithWindow
您告诉它以只读方式打开输入文件,而不是无标题,并将WithWindow parm保留为默认值(True),该值将以可见窗口打开

请记住,您不能编写任何选择任何内容(需要一个可见窗口)的代码,但既然您没有这样做,那么您就可以开始了

[附加编辑] Ansgar是正确的(为我先前的错误评论道歉)。我们不允许无形地调用PPT,但如果您创建/打开演示文稿时没有窗口,PPT将永远不会出现。我对VBS脚本不够熟悉,无法解决您看到的确切问题
Presentations.Open "filename", boolReadOnly, boolOpenUntitled, boolWithWindow
' Add a Slide to a Microsoft PowerPoint Presentation
 Const ppLayoutText = 2
 Dim objPPT As Object
 Dim objPresentation As Object
 Dim objSlide As Object

Set objPPT = CreateObject("PowerPoint.Application")

Set objPresentation = objPPT.presentations.Open("c:\temp\something.pptx", , , msoFalse)
Set objSlide = objPresentation.Slides.Add(1, ppLayoutText)

objPresentation.Save
objPPT.Quit
oPres = oApp.Presentations.Open(ppt_file, , , Microsoft.Office.Core.MsoTriState.msoFalse)