我在 Win32 上使用 Python 与 OneNote 的 COM 互操作进行交互。
下面是提取笔记本层次结构的最基本代码:
import win32com.client
onObj = win32com.client.gencache.EnsureDispatch('OneNote.Application.12')
result = onObj.GetHierarchy("",win32com.client.constants.hsNotebooks)
print(result)
请注意 OneNote.Application.12
,它按我的预期工作。
问题是,当我运行 Makepy 时,我实际上选择了 v15 类型库:
如果我将代码更改为 OneNote.Application.15
或只是 OneNote.Application
,则会出现错误:
TypeError: This COM object can not automate the makepy process - please run makepy manually for this object
请问这是为什么?我在跑:
- Python 3.3.1(64 位)
- Pywin build 218 (AMD64)
- 赢得 8 x64
- Office 2013 x64
最佳答案
检查您的注册表记录,特别是 TypeLib 部分中的 key {0EA692EE-BB50-4E3C-AEF0-356D91732725}:
HKEY_CLASSES_ROOT\TypeLib\{0EA692EE-BB50-4E3C-AEF0-356D91732725}
这种奇怪的行为可能是由于存在无效的子键造成的。此类 key 必须仅包含一个子 key “1.1”,除此之外别无其他。
该类的正确注册表记录应如下所示:
|- {0EA692EE-BB50-4E3C-AEF0-356D91732725}
| |- 1.1
| |-0
| | |- win32
| |- FLAGDS
| |- HELPDIR
key “win32”必须指向 OneNote 可执行文件,例如C:\PROGRA~1\MICROS~1\Office15\ONENOTE.EXE\3
关于Python Pywin 和 OneNote COM : OneNote. Application.15 'cannot automate the makepy process',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287432/