Python win32com当“可见”设置为False时,如果光标位于单元格中,Excel.Application将抛出错误

在此先感谢您的帮助/build议。

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

这里是我用作我的button的命令的代码:

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

编辑: 这是build议作为以前的答案,但问题和解决scheme是在C#中,而我需要在Python中的解决scheme。 问题是相似的,但我相信我在Python中find的解决scheme无论如何都比较简单。

我find了有效的解决scheme 通过检查Application.Ready属性,可以确定excel文件是否处于编辑模式。 不幸的是,如果文件处于编辑模式,这仍然会引发错误。 我能够通过使用try语句来查询,并捕获pywintypes.com_errorexception。

我简单地通过添加一个新的函数来检查状态来编辑我的代码:

 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应用程序仍然处于编辑模式,那么该button根本就没有任何作用。 如果Excel应用程序不处于编辑模式,它按预期工作并切换可见性。