如何解决Python win32com 获取 COM 对象的 TypeName 或 Class
我目前正在尝试使用 win32com 在 python 中复制一些 VBA 代码。这个特定的代码使用 TypeName
并且我在下面使用 Excel(不是我正在与之交互的实际程序)制作了一个 MWE:
' VBA script that will print "Worksheet" as the TypeName
Public Sub GetActiveSheet()
MsgBox TypeName(ActiveSheet)
End Sub
看起来可以使用 win32com.client.gencache.EnsureDispatch
,例如:
excel_gc = win32com.client.gencache.EnsureDispatch("Excel.Application")
sheet_gc = excel_gc.ActiveSheet
#> <win32com.gen_py.Microsoft Excel 15.0 Object Library._Worksheet instance at 0x83075408>
type(sheet)
#> <class 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x8._Worksheet._Worksheet'>
不幸的是,我必须在此应用程序中使用 win32com.client.dynamic.Dispatch
,因为它似乎使用了经常返回“AnyObject”的工厂设计模式。当我使用dynamic.Dispatch时,我不再有COMObject类型的信息:
excel = win32com.client.dynamic.Dispatch("Excel.Application")
sheet = excel.ActiveSheet # <COMObject <unknown>>
type(sheet)
#> <class 'win32com.client.dynamic.CDispatch'>
有人能解释一下如何从 <COMObject <unknown>>
的 win32com.client.dynamic.Dispatch
对象获取类型信息吗?谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。