Pythonからaccessのmdbファイルを操作したいが上手く動かない
うまく動かない。
恐らく64bit版と32bit版のドライバ(ADOかODBCか)が競合しているのだろう。VBSなら32,64bitでWscriptを切り替えて使えるのだが。
OSがWindows10で64bitでOffice2013が32bitドライバなのだろう。
Win32OLE 活用法 【第 7 回】 ほかの言語での COMるびまにPythonからcomオブジェクトを操作する例が載っていたので使えないか考えてみる。
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 で検証しました。
恐らく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 で検証しました。
コメント
コメントを投稿