我有一个VBScript,可以在隐藏模式下使用Visio.Application
在后台打开Visio文件。
Set Visioapp = CreateObject("Visio.Application")
Visioapp.Visible = False
Set Visio = Visioapp.Documents.Open(VisioFile)
除非我在处理它时尝试打开生成弹出窗口的文件,否则这样可以正常工作。如果发生这种情况,应用程序将显示警告以通知用户,但由于应用程序对用户不可见(或在没有用户在场的情况下运行),脚本将无限期挂起,等待即将到来的输入。
如果我正在为Excel或Word编写VBA代码,我可以使用Application.DisplayAlerts = False
(和/或可能DisplayEvents
)。但在我的VBScript中,Visio应用程序没有该属性。 Visioapp.DisplayAlerts = False
会向我显示错误“对象不支持此属性或方法”。
如何禁止从VBScript打开的Visio应用程序生成的弹出窗口?
答案 0 :(得分:4)
总结来自@Dave和@Noodles的评论,Visio Application
对象没有其他Office应用程序所拥有的属性DisplayAlerts
。相反,它提供了一个属性AlertResponse
,允许您定义应用程序是否应通过确定,取消,中止来响应警报, 重试,...
要让应用程序以确定响应所有警报,请将代码更改为以下内容:
Set Visioapp = CreateObject("Visio.Application")
visioapp.AlertResponse = vbOk
Set Visio = Visioapp.Documents.Open(VisioFile)
请注意,在这种情况下,您可以使用VBScript已提供的symbolic constants(vbOk
,vbCancel
,vbAbort
,vbRetry
,...)。对于特定于应用程序的常量(例如SaveAsEx
方法的SaveFlags
),这不会起作用。在这些情况下,您必须使用数值:
Visio.SaveAsEx "C:\path\to\output.vsd", 1
或在脚本中定义常量:
Const visSaveAsRO = 1
...
Visio.SaveAsEx "C:\path\to\output.vsd", visSaveAsRO