提前感谢您的帮助/建议。
我尝试创建一个程序,使用tkinter作为GUI来收集信息,然后使用win32com将该信息发送到现有的Excel文件。在我的Tk窗口中,我有一个按钮,可以使用'可见'切换excel文件的可见性。 Com对象的属性。它工作正常,除非当您尝试再次隐藏文件时光标在单元格内仍处于活动状态(设置'可见'为False)。当我这样做时,它会抛出一个AttributeError。有没有解决方法?
以下是我用作按钮命令的代码:
def buttonShow(XL):
XL.visible ^= 1
编辑: This被建议作为先前的答案,但问题和解决方案是在C#中,而我需要一个Python解决方案。问题类似,但我相信我在Python中找到的解决方案无论如何都更简单。
答案 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应用程序未处于编辑模式,它将按预期工作并切换可见性。