繁体   English   中英

当'visible'设置为False时,如果光标位于单元格中,则Python win32com Excel.Application引发错误

[英]Python win32com Excel.Application throws error if cursor is in a cell when 'visible' is set to False

在此先感谢您的帮助/咨询。

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

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

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

编辑: 建议作为一个以前的答案,但问题和解决方案是在C#中,而我需要在Python的解决方案。 问题是相似的,但是我相信我在Python中找到的解决方案还是比较简单的。

我找到了有效的解决方案。 通过检查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应用程序不在编辑模式下,它将按预期工作并切换可见性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM