我正在尝试使用吡虫啉模块来获取可以通过RTD在Excel中获取的信息。
但是,当我尝试运行示例python脚本时,会得到以下错误:
pywintypes.com_error:( -2147221164, 'Class not registered', None, None)我尝试过其他几个RTD函数,有时(当我使用Dllname.function_name作为RTDClient()的参数时)我得到:
pywintypes.com_error:( -2147221005, 'Invalid class string', None, None)所有这些RTD函数在Excel 2010中都能很好地工作。
我还没有找到Python的解决方案,但我已经浏览了一些C#可用的技巧:
其基本思想是:
ProgID从注册表中获取rtd服务器的类类型(例如,RTDTime.RTD,如果您已经使用regsvr32注册了dll,您可以在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\RTDTime.RTD中找到它们)。
在C#中,函数是Type.GetTypeFromProgID()。我相信在win32com.模块中有一个相同的函数IRtdServer (Microsoft.Office.Interop.Excel.IRtdServer)。IRtdServer.ConnectData(topicID, topics, newData)获取数据:- `topicID` seems to be any random `int`;
- `topics` is the parameters you used in Excel, it is an array;
- `newData` is a `bool`, set it to be `True` if you request new data and not the cached data.
根据链接的博客文章,事件类也可以由progID获得。,但我还没有在reg表中找到一个。
在IRTDUpdateEvent**.中的--我认为也许可以创建一个但我不知道如何处理Python。**
有人能帮我解决这些错误吗?
发布于 2014-08-08 06:07:17
解决了。安装并使用32位ActivePython
http://python.6.x6.nabble.com/Problem-using-win32com-client-Dispatch-on-Win7-64bit-td1957248.html
可能是因为我使用64位python并试图获取32位com对象。
发布于 2014-08-08 08:25:14
附注:
pyrtd模块只支持单个主题订阅。
用户需要在pyrtd.py上进行很少的修改才能传递一个元组来启用多个主题子:
Line116
self._rtd.ConnectData(id, list(topic), True)https://stackoverflow.com/questions/25181932
复制相似问题