Python win32com.client由于Visio错误而暂停,并且不会继续执行其余代码



我正在打开并存档Visio文件。

visio = comclt.Dispatch("Visio.Application")
wsh= comclt.Dispatch("WScript.Shell")
wsh.AppActivate("Microsoft Visio")
for i in os.listdir(path): #loops through the path
    if i[-3:]=='vsd': #checks to see if it is a visio file
        doc = visio.Documents.Open(path+'\'+i)

但是,当我打开某些Visio文件时,因为Visio文件是在另一台存在本地模具的机器上创建的,所以出现了.vss is part of workspace but cannot be opened错误。这不是问题,我可以点击ok。所以我已经输入了发送密钥ENTER的代码。

这是我的问题。我有下面的代码。但它不起作用,因为(我认为)代码在doc = visio.Documents.Open(path+'\'+i)上暂停,直到按下ok才继续。手动按下ok后,代码将休眠2秒,然后继续。

time.sleep(2)
wsh.AppActivate("Microsoft Visio")
wsh.SendKeys("{ENTER}") 

如何告诉python不要等待doc = visio.Documents.Open(path+'\'+i)?还是另一种解决方法?

您可以尝试使用.AlertResponse来阻止Visio中的消息框:http://msdn.microsoft.com/en-us/library/office/ff767782.aspx

即在打开图表之前,设置

Visio.AlertRespone=1

这样可以防止消息弹出。

最新更新