Pythonからaccessのmdbファイルを操作したいが上手く動かない

うまく動かない。
恐らく64bit版と32bit版のドライバ(ADOかODBCか)が競合しているのだろう。VBSなら32,64bitでWscriptを切り替えて使えるのだが。
OSがWindows10で64bitでOffice2013が32bitドライバなのだろう。
Win32OLE 活用法 【第 7 回】 ほかの言語での COMるびまにPythonからcomオブジェクトを操作する例が載っていたので使えないか考えてみる。
import win32com.client
from win32com.server import util
import pythoncom

class WebBrowserEvent:
    def OnDownloadComplete(self,*args,**kwds):
        (print "Download Complete")
    def OnQuit(self,*args,**kwds):
        exit

def com_collection_iter(collection):
    return (collection.Item(index)
            for index in range(1, collection.Count+1))

#ie = win32com.client.Dispatch("InternetExplorer.Application")
ie = win32com.client.DispatchWithEvents("InternetExplorer.Application",WebBrowserEvent)
ie.Visible = True
ie.GoHome()
while ie.ReadyState != win32com.client.constants.READYSTATE_COMPLETE:
    pass

ie.Navigate('http://www.ruby-lang.org/')

while ie.ReadyState != win32com.client.constants.READYSTATE_COMPLETE:
    pass

count = 0
for element in ie.Document.all:
    count += 1
print( "complete\n %d elements found\n" % (count))

以下リンク先からの引用

Python で、COM オブジェクトを作成するには、単に win32com.client.Dispatch というメソッドを使います。 今回は、イベントハンドラを定義して、そのイベントハンドラを使う形で COM オブジェクトを作成しようとします。イベントハンドラを指定して COM オブジェクトを作成するときは、win32com.client.DispatchWithEvents を 使います。 Python では、タイプライブラリで定義された定数を利用できます。 Ruby では、指定したモジュール内に定義されますが、Python では win32com.client.constants という名前空間で定義されます。 COM の定数を利用するには、あらかじめ MakePy ユーティリティを使って、 利用可能な状態にしておく必要があります。 MakePy ユーティリティは、PythonWin というツールからメニューで 選択できます。 Python でのイベントハンドリングは、上記のスクリプトのように あらかじめイベントハンドラのためのクラスを定義することによって行います。 この節は ActiveState からダウンロードできる ActivePython の バージョン 2.4.1 で検証しました。

コメント

このブログの人気の投稿

Python OpenCVとWebカメラでバーコードリーダー

OpenCV 画像の足し算

OpenCV3とPython3で形状のある物体の輪郭と方向を認識する(主成分分析:PCA、固有ベクトル)