vbscript - 无法使用 VBScript 为 PowerPoint Print 设置 OutputType
问题描述
我可以通过 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 能同样工作,这会让你头疼。
特别是关于如何的部分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
和 expect 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
推荐阅读
- keras - 使用 CRF 进行多元二进制序列预测
- angular - 如何通过 HTTP POST 提供 asp.net 核心 Angular SPA
- sql - 在更新到字符变量之前删除小数点
- jquery - 有没有办法避免在移动分辨率下slideDown()和SlideUp()的跳跃动画问题?
- sharepoint - 是否可以在 SharePoint 设计器工作流中使用列表 ID 而不是列表标题来更新项目?
- spring - 带有@Version的Spring mongo InvalidPersistentPropertyPath
- amazon-web-services - AWS RDS Aurora 全局集群错误:无法为跨区域复制集群指定用户名
- excel - Excel宏将数据组合成单行
- json - 从 jq 输出元素创建一个新的 json 字符串
- javascript - 如何为同一服务器上的 JSON 文件激活 CORS?