4

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.15OneNote.Applicationエラーが発生します。

TypeError: This COM object can not automate the makepy process - please run makepy manually for this object

これはなぜですか?私は走っています:

  • パイソン 3.3.1 (64 ビット)
  • パイウィン ビルド 218 (AMD64)
  • 勝利 8 x64
  • オフィス 2013 x64
4

2 に答える 2

4

レジストリ レコード、特に TypeLib セクションのキー {0EA692EE-BB50-4E3C-AEF0-356D91732725} を確認します。

HKEY_CLASSES_ROOT\TypeLib\{0EA692EE-BB50-4E3C-AEF0-356D91732725}

この奇妙な動作は、おそらく無効なサブキーの存在が原因です。このクラス キーには、サブキー「1.1」を 1 つだけ含める必要があります。

このクラスの正しいレジストリ レコードは次のようになります。

|- {0EA692EE-BB50-4E3C-AEF0-356D91732725}
|     |- 1.1
|         |-0
|         | |- win32
|         |- FLAGDS
|         |- HELPDIR

キー「win32」は、C:\PROGRA~1\MICROS~1\Office15\ONENOTE.EXE\3 などの OneNote 実行可能ファイルを指す必要があります。

于 2014-02-28T15:00:19.733 に答える
1

site-packages\win32com\はフォルダーがありF2A7EE29-8BF6-4A6D-83F1-098E366C709Cx0x1x0、これには v12 タイプ ライブラリが含まれていました。0EA692EE-BB50-4E3C-AEF0-356D91732725x0x1x1.pyv15 lib のようなファイルもありました。

コードを次のように変更します。

gencache.EnsureModule('{0EA692EE-BB50-4E3C-AEF0-356D91732725}', 0, 1, 1)
onapp = win32com.client.Dispatch('OneNote.Application.15')

v15 タイプ ライブラリにアクセスできます。ただし、この明示的な参照が必要な理由はまだ明確ではありません。

于 2013-05-01T20:02:26.507 に答える