Hatena::Groupfukuoka-py

ikikko.py このページをアンテナに追加 RSSフィード

2008-12-01

PythonからActiveX(on Trac Lightning)

00:33 | PythonからActiveX(on Trac Lightning) - ikikko.py を含むブックマーク はてなブックマーク - PythonからActiveX(on Trac Lightning) - ikikko.py PythonからActiveX(on Trac Lightning) - ikikko.py のブックマークコメント

もっと頻繁に書いていくつもりだったのに、いつの間にか最初のエントリから結構過ぎてました。気合入れんと!


作りたいものを実現するために、PythonからActiveXを使う際の動作検証。ただ一点だけ制約事項は、できるだけTrac Lightningの環境をそのまま用いて実現すること。

まずは、手始めに PythonからActiveXを使ってExcelとIEを操作する例 - ふにゃるんを参考にしてExcelを扱ってみる。

#!/usr/bin/env python
# coding: utf-8

import win32com.client

if __name__ == '__main__':
    excel = win32com.client.Dispatch("Excel.Application")
    excel.Visible = True
    excel.Workbooks.Add()
    excel.Cells(1, 1).value = u"初めてのExcel"

うーん、速攻でエラーが。よく分からないので、少しずつ切り分けてみることに。そうしたら、↓が大本の原因らしい。

>>> import pythoncom
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\TracLight\python\lib\site-packages\pythoncom.py", line 3, in <module>
    pywintypes.__import_pywin32_system_module__("pythoncom", globals())
  File "C:\TracLight\python\lib\site-packages\win32\lib\pywintypes.py", line 94, in __import_pywin32_system_module__
    "No system module '%s' (%s)" % (modname, filename)
ImportError: No system module 'pythoncom' (pythoncom25.dll)

「pythoncom25.dll」がねーよと。うーん、どういうことだろうと、提供元サイトのFAQを見てみる。

Check for duplicate Python system files Check for multiple versions of pythonxx.dll, pywintypesxx.dll, or pythoncomxx.dll, where xx is the Python version (eg, 23). In general, you should find exactly one copy of these files in your Windows system directory (generally named SYSTEM32.) However, non admin installs will place then in your main Python directory. Check for copies of these files in both places - if you find multiple copies, delete all but the ones in your system directory.

403 Forbidden

要するに、本来ならWindowsシステムディレクトリPythonのメインディレクトリのどっちかに放り込まれるよと。けど、どっちも見当たらないね…。けど、どっかにありそうな気がするんですよね。なんで、TracLight以下のディレクトリを全部検索してみる。

「C:\TracLight\python\Lib\site-packages\pywin32_system32」に「pythoncom25.dll」があった!これを、とりあえず↑のどっちかのディレクトリに放り込めばいいのかな?やってみよう。

・・・でけた!一番最初のスクリプトを実行すると、こんな感じにExcelが勝手に立ち上がる!!ブラボー!おお…ブラボー

f:id:ikikko:20081202002213p:image

LenemarLenemar2013/02/01 16:48What an awesome way to explain this-now I know everytnihg!