无法使用 VBScript 为 PowerPoint 打印设置 OutputType

Cant set OutputType for PowerPoint Print with VBScript

我可以通过 vbscript 打开 pptx 文件并打印它,但我终究无法获得 OutputType 集。无论我的格式如何,我都会不断收到此错误,我什至直接从 Microsoft 文档复制。知道有什么问题吗?>

https://docs.microsoft.com/en-us/office/vba/api/powerpoint.printoptions

错误:

C:\Windows\system32>cscript.exe C:\tmp\print_ppt.vbs
Microsoft (R) Windows Script Host Version 5.812
Copyright (C) Microsoft Corporation. All rights reserved.

C:\tmp\print_ppt.vbs(26, 9) Microsoft PowerPoint 2016: PrintOptions.OutputType : Invalid enumeration value.

代码:

Dim objPPT
Dim objPresentation
Dim objPrintOptions

Set objPPT = CreateObject("PowerPoint.Application")
objPPT.Visible = True

'Presentations.Open "filename", boolReadOnly, boolOpenUntitled, boolWithWindow
Set objPresentation = objPPT.Presentations.Open("C:\tmp\test.pptx",msoTrue,,msoFalse)

Set objPrintOptions = objPresentation.PrintOptions
objPrintOptions.PrintInBackground = False
   'https://docs.microsoft.com/en-us/office/vba/api/powerpoint.printoptions.outputtype
'objPrintOptions.OutputType = ppPrintOutputSixSlideHandouts
'objPresentation.PrintOut


With objPresentation 
    With .PrintOptions 
        .NumberOfCopies = 2 
        .Collate = False 
        .PrintColorType = ppPrintColor 
        .PrintHiddenSlides = True 
        .FitToPage = True 
        .FrameSlides = True 
        .OutputType = ppPrintOutputSlides 
    End With 
    .PrintOut 
End With

objPresentation.PrintOptions.PrintInBackground = True
objPPT.Quit
Set objPPT = nothing

VBA和VBScript很相似,但又不一样。今晚这本书对我来说是一本很好的读物,让我开始看到一些“小”差异,如果您熟悉 VBA 并期望 VBScript 也能同样工作,这些差异会让您头疼。

https://www.oreilly.com/library/view/vbscript-in-a/1565927206/ch01s03.html#:~:text=VBScript%20is%20a%20subset%20of%20the%20Visual%20Basic%20for%20Applications%20language.&text=VBScript%20is%20an%20untyped%20language,variables%20in%20VBScript%20are%20variants.

特别是关于如何 VBScript does not support named arguments. 这与属性将与 VBScript 一起工作的类似情况,但是 VBA 中的语法有多个选项,而 VBScript 中只有一个可以工作。

在这种情况下,它使用的是数值。

另一个例子是我的行w/

    'Presentations.Open "filename", boolReadOnly, boolOpenUntitled, boolWithWindow
    Set objPresentation = objPPT.Presentations.Open("C:\tmp\test.pptx",msoTrue,,msoFalse)

这是使用 positional 个参数与 named 个值对。

这是我找到该选项的数字版本的地方,现在将一些逻辑编写到我的脚本中,以便最终用户可以传递像 4 这样的参数并期望 4Slides/Page.

https://docs.microsoft.com/en-us/office/vba/api/PowerPoint.PpPrintOutputType

With objPresentation 
    With .PrintOptions 
        .PrintInBackground = False
       'https://docs.microsoft.com/en-us/office/vba/api/PowerPoint.PpPrintOutputType
       'https://docs.microsoft.com/en-us/office/vba/api/powerpoint.printoptions.outputtype
       .OutputType = 8 
    End With 
    '.PrintOut 
   .PrintOptions.PrintInBackground = True
End With