Basp21等のActive XをWindows10 64bit環境で使える様にする方法

2020年5月2日Windows関連,パソコン関連Tips,Windows10,Windows関連,パソコン関連

お仕事上のトラブルから出てきたメモ書きです。

そもそもはPCを新調した顧客からのこんな問い合わせでした。

エクセルファイルの起動時にコンパイルエラーというものが出ます。
「このプロジェクトのコードは64ビットシステムで使用するために更新する必要があります。
Declareステートメントの確認及び更新を行い、次にDeclareステートメントにPtrSafe属性を設定してください。」
というメッセージが表示されます。

これまでWindows7 32bit環境で問題無く動いていたマクロ付のエクセルファイル、新規PCだと上記の様なエラーが出るんでどうにかしてって話でもあります。

問題は解決することが出来てますが、Active Xを64bit環境で扱いたい場合は同じ対処方法でいけることが多いのでまとめる事にしました。

スポンサーリンク

この問題が起きる原因

とてもシンプルな理由です。

Windowsの64bit環境では32bit環境向けに作られたActive Xがそのままだと動かないからです。

32bit環境だと通常C:\Windows\system32に保存されるのですが、64bit環境のアプリだとsystem32が参照できないのでエラーになります。

今回の発端になったエクセルファイルではBasp21を呼び出しており、32bit環境でのVBAそのままだと動作しない為に発生したトラブルでした。

対処方法の概要

これも至ってシンプルでした。

SysWOW64に保存してレジストリ登録すれば解決します。

今回はBasp32を例に取りますが、他にもActive Xを使っている物なら大体がこの方法で対処できると思います。

実際に今回のBasp32とキーエンスのBT-500用取込モジュールが同じ様な対処方法で対応出来ます。

対処法の具体的

まずsystem32に保存されたファイルを明確にします。

今回のサンプルBasp32だと「BASP21.DLL」が本体ですが、他のファイルはこれらです。

  • BASP21.DLL
  • BSMTP.DLL
  • BREGEXP.DLL
  • BCOUNT.DLL
  • BSENDM.EXE
  • BINETX.DLL
  • BASP21.TLB

これらのファイルはSystem32にインストールされるので検索し、該当ファイルをSysWOW64にコピーします。

コピーしたら管理者権限で起動したコマンドプロンプトで以下のコマンドを実行すれば終了です。

%systemroot%\SysWoW64\REGSVR32.EXE [登録したいActive Xのファイル]

サンプルのBasp32だと

%systemroot%\SysWoW64\REGSVR32.EXE BASP21.DLL

というコマンドになります。

成功すると登録に成功した旨のダイアログが表示されます。

おわりに

SysWOW64にあると登録できれば大体どうにかなります。

もう眠くて力尽きかけてるので、細かいのはまた後日…

スポンサーリンク