Python 与 Office 2013(Office 15)一起使用Makepy

2024-09-27 21:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我在office2010中使用python和excel,没有问题。 我使用python的makepy模块来绑定到txcelcom对象。在

然而,在另一台计算机上,我安装了office2013,当我启动makepy时,没有列出excel选项(与office2010相反,makepy列出了“microsoftexcel14.0对象库”)。在

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

我们将不胜感激。 谢谢。在


Tags: 模块对象object注册表选项计算机libraryexcel
3条回答

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

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

然后按如下方式修改:

^{pr2}$

老问题,但我希望这对某人有帮助。在

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

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语句以供参考。在

谢谢!在

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

相关问题 更多 >

    热门问题