(無償) logo
世界中で使われるISO標準オフィスソフト(MSオフィス互換)

★LibreOfficeの導入事例★
詳細について

2013年7月30日火曜日

【MS ACCESS 2000~2010】 ファイルがACCESS 2010 Runtimeで開けない!そのときの対応メモ

最終更新 2015年12月25日 (ACCESS Runtime 2010 Service Pack 2について追加)


開発環境としてACCESS 2000から、2010まで至り、細々とプログラムを開発してきた。
そうして開発したものはユーザー環境においてRuntimeで動作させる。

ACCESS 2010までなんとかやってきたのは良かったが、今までに経験しないエラーに見舞われ焦った。
開発したファイルが、開発環境と同じバージョンのACCESS 2010 Runtimeで開けないのだった。

だからと言ってACCESS 2010で変換したADEファイルは、ACCESS 2007 Runtimeでは開けなかった。

この一連の問題で気付いた点と対策のメモを残す。
最後のほうに対策とまとめ。


□ACCESS2000から2002を経て2003に至り、ADPファイルでVBAプログラム開発

かなり前にACCESS 2000でADPファイルでSQL SERVERと連動させたプログラムを開発した。

その後、開発環境は、ACCESS 2002を経て、ACCESS 2003になった。
ACCESS 2000では、予期せぬADPファイル破壊にたびたび見舞われていたからだ。
そうしてこの段階で、ADPファイルも2003形式に変換した。

さらに、安定動作を求めて、開発環境をACCESS 2010(32bit)に替えた。
ADPファイルの形式は、ここでも2003のままにしていた。



□ACCESS 2010で作成したADPファイルを、さらにADEに変換し、配布しようとしたが・・・

さて、こうしてACCESS 2010(32bit)で続けて開発したADPファイルを、
ADEファイルという配布用形式(ソースを見たり変更したり再開発が不可になる形式)に変換した。
これを、当然のようにそれまで使っていたACCESS 2007 Runtimeで動作させようとしたら、
次のエラーが発生して、終了。
”データベースの形式を認識できません
データベースは使用しているバージョンよりも新しいバージョンで作成されています。
現在のバージョンにアップグレードしてからデータベースを開いてください。”
( 後で気付いたが、ADPファイルは2003形式であっても、それをADE形式に変換すると、
その変換を行ったACCESSのバージョンが継承されるということではないか。
ACCESS 2010で開発を続けていたもともとの2003形式ADPファイルは、ACCESS 2007 Runtimeで開けた。)



□ACCESS 2010 Runtimeで、ファイルを開くが重症そうなエラーが発生した・・・

どうしてもADEファイルで配布したかったので、このACCESS 2010で変換したADEファイルを、
開発環境と同じバージョンであるACCESS Runtime 2010で実行させると、次のエラーが生じた。
”指定した式に、Microsoft Accessが見つけることができない関数名が含まれています”
そうして、「すべてのマクロを停止」というボタンしか押せない状態になって、次の情報が現れた。
・マクロ名 AutoExec
・アクション名 プロシージャの実行
・引数 main()
・エラー番号 2425
そうして、強制終了される。

しかし、ACCESS 2010では正常に動作していたADEファイルだったのだ。それがACCESS 2010 Runtimeでは動作しなくなった。
ADPファイルの場合でも同じエラーが生じた。

この段階ではACCESS 2010 Runtimeを使うことはあきらめた。



□2010で開発していようとも2003形式のADPファイルなので、ACCESS 2003に戻してみた

最終的にどうしたか。


以下の作業では保存作業が伴う。
オリジナルファイルの場合、言うまでもなく、バックアップファイルを作成しオリジナルをキープしておく。

そうして、Access 2010で開発したそのADPファイル(2003形式)を、再びAccess 2003で開いた。
そこでsql server接続の設定もきちんと行って、接続も成功させた。

さらに、とりあえず修復処理をして、続けてADEに変換した。
もし、ADEファイルへの変換に失敗したら、「VBAコードのコンパイル作業」をACCESS VBAのメニューでまず行って、ファイルを「保存」しておく。 

 ( 
 しかし、それでもACCESS2003において「ADEファイルを作成できませんでした」などとエラーが出る場合もあった。
このとき気づいたことは、すでに当該ADPファイルにおいてフォーム内の操作でイベント関係のエラーが発生していたことだった。
何かエラーがある場合、ADEに変換することができないようだ。 
 私の場合、ACCESS2003で開発してきたADPファイルにおいて、
既存フォームをコピー&ペーストして新しいフォームを作成した直後にこのエラーに遭遇した。
だから、コピー&ペーストして作成したフォームを全削除して、ACCESS2010を使って泣く泣く作成しなおした。
 すると先ほどのフォームのイベントエラーは発生しなくなり、無事にADEファイルに変換することができるようになった。
 )

こうしてようやく、ACCESS 2003で変換したADEファイルができた。
こうして作成したADEは、ACCESS 2007 Runtimeでも正常に開くことができました!
これで十分です。

Microsoft Office Access 2003

中古価格
¥8,100から
(2018/3/19 23:15時点)


この段階で、2015年12月25日現在でダウンロード可能なACCESS Runtime 2010 SP2でも、
起動可能になった。(下記、追申参照)



□まとめ

というわけなので、開発からユーザー配布までには次の手順を取らなければなりません。
ACCESS 2010で開発(2003形式ADPファイル) → ACCESS 2003で修復&VBAコンパイルして保存&ADE変換
そして、このADEファイルをACCESS Runtime 2007で動作させます。

この段階で、2015年12月25日現在でダウンロード可能なACCESS Runtime 2010 SP2でも、
起動可能になった。(下記、追申参照)


□思うこと
ACCESS2000から始めてACCESS 2003に開発環境を移し、さらにACCESS2010で開発を継続してきた場合、ADPファイルの中で何かおかしなこと、不整合でも生じているのだと思う。
なぜなら、フォームをコピー&ペーストして別のフォームから新しいフォームを作成すると、
作成したフォームでイベント関係のエラーが発生するようになったからである。
最初はうまく動作していても時間を経てからエラーを出すようになるのだから曲者である。
もうフォームなどのコピー&ペーストはしない。安全指向でいこう。
あとまだもうちょっとACCESSでの開発が残っているんだ。

ACCESS 2013では、ADP形式がサポートされなくなってしまうようだ。
悩み多きACCESSを開発環境とするのは卒業して、明々白々なASP.NETに完全移行しようと思っている。
開発中にADPファイルが壊れるのもうんざりだし、今までのやり方が通じないなら、ACCESS VBAにこだわらない。



追申:

ACCESS 2003で変換したADEファイルは、2015年12月25日現在にダウンロード可能な、
Access 2010 Runtime 32bit でも、開くことができました。
Windows 10 Pro 64bit(IPv6とIPv4のデュアルスタック)環境で動作テストしました。

ただし、SQL Serverへネットワーク越しにつながらない問題が生じたので、
ACCESS 2010 Runtime 32bit用のService Pack 2で、更新することで対応できました。

このようにWindows 10(IPv6とIPv4のデュアルスタック環境)で、ACCESS Runtime 2010が動作し、
ADPファイルを開けたものの、Windows 10は、今後どんどんとアップデートされていくらしいから、
またいつ、「開かない、動かない問題」に遭遇するか心配です。
ACCESS Runtime 2010 SP2は、いったいいつまでWindows 10でもサポートされるんだろうか。
持っている全てのパソコンのOSをWindows 10にアップグレードするかしまいか、迷っているところ。


ところで、ACCESS 2007 Runtimeの環境では、ネットワークのIPv6設定が有効化されていて、
グローバルIPv6アドレスが取得されている場合、IPv4環境のSQL Serverへアクセスできなかった。
Windowsのネットワーク設定から、IPv6設定を無効化することで正常につなげられた。
(たぶん、ACCESS Runtime 2010 SP2では、この問題は発生していない。)