Mat*_*ter 8 python com excel rtd
通过将值更改为,我已经在Excel 2010(32位)中启动并运行了excelRTDserver.py.我可以在加载项列表中看到服务器,如果我进入单元格,我会得到当前时间.但它永远不会更新.如果我将"5"更改为另一个数字,我会得到更新但在初始更改后它永远不会再次更改.EXCEL_TLB_MINOR7=RTD("Python.RTD.TimeServer","","seconds","5")
如何更新它?我在这里发现了其他有类似问题的人,但没有解决方案.
更新:我还有一点 - 在将PyIDispatch回调对象转换为IRTDUpdateEvent回调对象时,ServerStart中引发了异常.使用此方法捕获错误消息,我得到"当该文件已存在时无法创建文件.".如果我按照这里的建议并使用win32com.client.CastTo(CallbackObject,'IRTDUpdateEvent')我得到"这个COM对象不能自动化makepy进程 - 请为此对象手动运行makepy",但我已经运行了makepy for Microsoft Excel 12.0 Object Library(1.6).
任何帮助将不胜感激.
我想你可能不走运。
根据 excelRTDServer.py 的作者在最近的 python-win32 线程中的说法:
这是回应的消息描述了您的具体问题,而且是最近出现的,所以也许您已经直接获得了此信息,但如果您没有...
我担心 IRTDUpdateEvent 的情况在最新版本的 Excel 中已经发生了变化(自 Excel 2007 以来?我想这不再是“最近的”了......)。
在寻找接口更改的新闻时,我在 java 论坛中发现了这个帖子:
http://www.nevaobject.com/phpbb3/viewtopic.php?t=516
让我担心的是这个评论:
“显然,在 Excel 12 (Excel 2007) 中,当通过 IDispatch 调用时,实现双 IRTDUpdateEvent 接口的 RTD 回调对象会抛出异常(通用 COM 异常 0x80020009)。如果您使用 v-table 绑定,则对 UpdateNotify 的调用会成功。我真的不知道知道这是 Excel 12 中的错误还是功能。”
到目前为止,我还无法根据 MSDN 信息确认这一点......但如果这是真的,它确实解释了所看到的问题。网上很多老的例子,pywin32+makepy 将此接口视为 IDispatch,并相应地包装它。
我认为我们现在无法用 pywin32 解决这个问题。我的理解是它依赖于 IDispatch 支持。可能需要查看 comtypes (http://starship.python.net/crew/theller/comtypes/) 来包装(新的?)IRTDUpdateEvent 对象,或者可能是 C 扩展。:(
| 归档时间: |
|
| 查看次数: |
3059 次 |
| 最近记录: |