I'm interacting with OneNote's COM interop using Python on Win32.
Here's the most basic code to pull out notebook hierarchy:
import win32com.client
onObj = win32com.client.gencache.EnsureDispatch('OneNote.Application.12')
result = onObj.GetHierarchy("",win32com.client.constants.hsNotebooks)
print(result)
Note the OneNote.Application.12
, this works as I'd expect.
The thing is that when I run Makepy I'm actually selecting the v15 type library:
If I change the code to be either OneNote.Application.15
or just OneNote.Application
then I get an error:
TypeError: This COM object can not automate the makepy process - please run makepy manually for this object
Why is this please? I'm running:
Check your registry record, in particular key {0EA692EE-BB50-4E3C-AEF0-356D91732725} in TypeLib section:
HKEY_CLASSES_ROOT\TypeLib\{0EA692EE-BB50-4E3C-AEF0-356D91732725}
This strange bevahior is probably caused by existence of invalid subkeys. This class key have to contain only a single subkey "1.1" and nothing else.
The correct registry record for this class should look as follows:
|- {0EA692EE-BB50-4E3C-AEF0-356D91732725}
| |- 1.1
| |-0
| | |- win32
| |- FLAGDS
| |- HELPDIR
The key "win32" have to point to OneNote executable, e.g. C:\PROGRA~1\MICROS~1\Office15\ONENOTE.EXE\3