Python win32com Excel.Application抛出错误,如果光标位于单元格中,则可见'设置为False

时间:2016-12-23 17:45:42

标签: python excel win32com

提前感谢您的帮助/建议。

我尝试创建一个程序,使用tkinter作为GUI来收集信息,然后使用win32com将该信息发送到现有的Excel文件。在我的Tk窗口中,我有一个按钮,可以使用'可见'切换excel文件的可见性。 Com对象的属性。它工作正常,除非当您尝试再次隐藏文件时光标在单元格内仍处于活动状态(设置'可见'为False)。当我这样做时,它会抛出一个AttributeError。有没有解决方法?

以下是我用作按钮命令的代码:

    def buttonShow(XL):
        XL.visible ^= 1

编辑: This被建议作为先前的答案,但问题和解决方案是在C#中,而我需要一个Python解决方案。问题类似,但我相信我在Python中找到的解决方案无论如何都更简单。

1 个答案:

答案 0 :(得分:1)

我找到了一个有效的解决方案。通过检查Application.Ready属性,您可以确定excel文件是否处于编辑模式。不幸的是,如果文件处于编辑模式,这仍然会引发错误。我能够通过使用try语句来查询和捕获pywintypes.com_error异常来解决这个问题。

我只是通过添加一个新功能来编辑我的代码来检查状态:

from pywintypes import com_error

def isReady(XL):
    try: return XL.Ready
    except com_error: return False

def buttonShow(XL):
    if isReady(XL):
        XL.Visible ^= 1

这似乎有效。现在,如果excel应用程序仍处于编辑模式,则该按钮不会执行任何操作。如果excel应用程序未处于编辑模式,它将按预期工作并切换可见性。