2011年3月1日火曜日

64bitパソコンでMSCommコンポーネントを動かすには?

Windows2000のOffice2000で動いていたプログラムがありました。

ExcelのVBAとMySQLをODBCで接続して使うレジのアプリです。
これは、僕がまだまだプログラムの「プ」くらいが分かり始めたころに作ったプログラムなので今見ると無駄だらけでした・・

DWB48MRSというキャッシュドロワとパソコンを繋いでいて、会計処理が終わると同時にドロワが開くというプログラムが書かれています。

今回、パソコンの買い替えに伴って今までWindows2000のOffice2000で動かしていたそのExcelのレジを64bitのWindows7、Office2010環境に移すことになりました。

バージョンが随分離れているので、不具合は絶対に避けられないと思っていましたが案の定です。

まずキャッシュドロワを動かすのにMSCommコンポーネントというコンポーネントを使っていましたが、これはVB6の頃のコンポーネントなので64bitでは動きません。

OSが64bitだったとしても、Officeが32bit版だったら何とか動かせたと思うんです。
でも多分そのパソコンのOfficeは64bit版でした。動かなかったので・・

MSCOMM32.OCXというファイルをダウンロードして、コマンドプロンプトを管理者権限で起動して「regsvr32 c:\windows\system32\MSCOMM32.OCX」とかやれば動くようなことを書いてあったのでやってみたんですけど、やっぱりVBAのフォーム編集画面にコンポーネントのアイコンが出ませんでした。

まぁ無理なものは仕方ないし、結構急ぎの要件だったので、32bitのパソコンで動かすことになりました。OSはVistaでOffice2007です。

とりあえず動いたんですけど、やっぱりバージョンの違いのせいか思ったように動かないことが多々あります。
もう一度調整しないといけません。

結果として、まだやってませんけど、仮想環境にWindows2000、Office2000の環境を構築してそっちで動かすのが一番確実かな・・という結論を出しています。

その方法を使えば、今後どんなにOSがバージョンアップしても、Win2000環境を保持することが可能ですし、バックアップも移行も簡単に行えて理想的だと考えています。

とりあえずVMWare PlayerかVirtualPC辺りで試してみようと思っています。
仮想化って古い環境をそのまま新しい環境上で使えるのでとても便利だと思います。
この件がうまく動けば今後もしばらく安泰です。

0 件のコメント:

コメントを投稿