【问题标题】:Python win32com.client pauses from Visio error and does not continue to execute rest of codePython win32com.client 因 Visio 错误而暂停,并且不会继续执行其余代码
【发布时间】:2014-10-01 23:16:32
【问题描述】:

我正在打开和归档 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)?或者是另一种解决这个问题的方法?

【问题讨论】:

    标签: python visio win32com


    【解决方案1】:

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

    即在打开图表之前,设置

    Visio.AlertResponse = 1

    这应该可以防止消息弹出。

    【讨论】:

    • 该代码应该放在哪里?可以举个例子吗?
    • 在创建 visio.即:visio = comclt.Dispatch("Visio.Application") visio.AlertResponse = 1
    猜你喜欢
    • 1970-01-01
    • 2021-04-12
    • 2017-10-08
    • 2013-12-11
    • 2021-02-05
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    相关资源
    最近更新 更多