首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python Makepy与Office 2013 (office 15)

Python Makepy与Office 2013 (office 15)
EN

Stack Overflow用户
提问于 2012-10-29 20:20:58
回答 3查看 2.2K关注 0票数 4

我在Office2010上使用python和excel,没有任何问题。我使用了python的makepy模块来绑定txcel com对象。

然而,我在另一台计算机上安装了office 2013,当我启动makepy时,没有列出任何excel选项(而不是在office 2010中,makepy列出了'Microsoft Excel 14.0 Object Library‘)。

我在注册表中搜索了“Microsoft Excel 15.0对象库”,它就在那里。我尝试使用:makepy -d 'Microsoft Excel 15.0 Object Library',但这不起作用。

我们将非常感谢您的帮助。谢谢。

EN

回答 3

Stack Overflow用户

发布于 2016-11-04 01:20:34

问题是win32com模块只在win32注册表项下查找Typelib注册表项,而Office15.0有一些win64注册表项。要解决此问题,请找到如下所示的Lib/site-packages/win32com/client/selecttlb.py部分:

代码语言:javascript
复制
# Only care about "{lcid}\win32" key - jump straight there.
try:
    key4 = win32api.RegOpenKey(key3, "%s\\win32" % (lcid,))
except win32api.error:
    continue

并像这样修改它:

代码语言:javascript
复制
# Only care about "{lcid}\win32" key - jump straight there.
try:
    key4 = win32api.RegOpenKey(key3, "%s\\win32" % (lcid,))
except win32api.error:
    try:
        key4 = win32api.RegOpenKey(key3, "%s\\win64" % (lcid,))
    except win32api.error:
        continue

这是个老问题,但我希望这能帮助一些人。

票数 6
EN

Stack Overflow用户

发布于 2013-05-13 03:50:33

在这里,我从pythonwin控制台复制我的win32com和office 2015交互的粘贴:

代码语言:javascript
复制
PythonWin 3.3.1 (v3.3.1:d9893d13c628, Apr  6 2013, 20:30:21) [MSC v.1600 64 bit (AMD64)]  on win32.
Portions Copyright 1994-2008 Mark Hammond - see 'Help/About PythonWin' for further copyright information.
>>> 
>>> 
>>> from win32com.client import gencache
>>> gencache.EnsureModule('{00020813-0000-0000-C000-000000000046}', 0, 1, 8)
Loading reg typelib {00020813-0000-0000-C000-000000000046} 1 8 0
Rebuilding:  1 8
<module 'win32com.gen_py.00020813-0000-0000-C000-000000000046x0x1x8' from 'C:\\Python33\\lib\\site-packages\\win32com\\gen_py\\00020813-0000-0000-C000-000000000046x0x1x8.py'>
>>> import win32com.client as client
>>> client.Dispatch("Excel.Application")
<win32com.gen_py.Microsoft Excel 15.0 Object Library._Application instance at 0x75090800>

正如你所看到的,它工作得很完美。

我已经启用了gencache模块中的所有print语句以供参考。

谢谢!

票数 1
EN

Stack Overflow用户

发布于 2017-02-17 13:37:25

wilywampa的回答纠正了这个问题。但是,win32com\client\combrowse.py上的combrowse.py也可以用来从注册的类型库文件夹中获取接口标识符(接口标识符),然后按照@cool_n_curious的建议将其与代码集成。但是如前所述,wilywampa的回答确实纠正了这个问题,您可以像往常一样使用makepy.py实用程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13121529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档