通过将EXCEL_TLB_MINOR
值改为7
,我已经在excel2010(32位)中启动并运行了excelRTDserver.py。我可以在插件列表中看到服务器,如果我在单元格中输入=RTD("Python.RTD.TimeServer","","seconds","5")
,我就得到了当前时间。但它从不更新。如果我把“5”改成另一个数字,我会得到一个更新,但在最初的更改之后,它再也不会改变。在
如何更新?我发现其他人有类似的问题here,但没有解决办法。在
更新:我有一点更进一步-在将PyIDispatch回调对象强制转换为IRTDUpdateEvent回调对象时,在ServerStart中引发了一个异常。使用this method捕获错误消息,我得到“当文件已经存在时无法创建文件”。如果我按照建议here并使用win32com.client.CastTo(CallbackObject,'IRTDUpdateEvent')
我得到“此COM对象无法自动执行makepy过程-请手动为此对象运行makepy”,但我已经运行了makepy for Microsoft Excel 12.0对象库(1.6)。在
任何帮助都将不胜感激。在
我想你可能走运了。在
According to the author of excelRTDServer.py in a recent python-win32 thread:
响应的消息描述了您的精确问题,而且是最近的问题,所以您可能已经直接得到了此信息,但万一您没有…。
Python:
我得到“此COM对象无法自动执行makepy过程-请为此对象手动运行makepy”,但我已经运行了makepy for Microsoft Excel 12.0对象库(1.6)。
昨天在工作中读了你的问题后,我忘了那是python而不是java:)。。好吧,我现在唯一想的是似乎您需要为office2010运行PIA。在
稍后编辑:如果你的钢铁在我告诉你的之后有问题,请发表评论,不要投否决票,因为这个问题并不常见。在
JAVA:
这是因为缺少生成v表的选项。在
您需要修改ServerStart方法以及}。然后您需要通过运行IBuilder来生成
IRTDServer
接口和IRTDServer_Impl class
,因此CallbackObject
是{IRTDServer_Skel
类。在现在您可以为
IRTDUpdateEvent
生成一个新的java包装器来请求v-table:为了解决这个问题,我在github上为pythoncom excel类型创建了一个新项目:
https://github.com/pyxll/exceltypes
这包括一个稍加修改的
excelRTDServer.py
版本,它使用新类型PyIRTDUpdateEvent
,而不是win32com
makepy包装器,因此它现在可以在Excel2010中工作(查找exceltypes/demos/excelRTDServer.py
中的注释'EXCELTYPES_MODIFICATION'
)。在要构建项目,您需要安装visualstudio(它不会使用gcc构建),您可以使用设置.py包含在项目中的内容如下:
如果需要强制它使用visualstudio而不是gcc,请使用
^{pr2}$"--compiler=msvc"
选项,例如使用anaconda。 如果要使用Visual Studio 2012而不是默认的2010,请将以下行添加到setup.py
:相关问题 更多 >
编程相关推荐