130313-error-msg

 一般的にMicrosoft社のOffice Access(以下Access)は上位バージョンで下位バージョンのファイルを動かすことができるようになっています(作り方によっては動かない場合もあります)。例えばAccess 2003で作ったmdbファイルはAccess 2010で動かせます。

 逆に上位バージョンのファイルを下位バージョンで動かすことはできません。例えばAccess 2010で作ったaccdbファイルをAccess 2003で動かすことはできません。ただし、Accessでは下位バージョンでも動かせるように変換する機能が最近のAccessにはあります。

 しかし、この変換したファイルは時として下位バージョン用に変換したのにもかかわらず、ファイルを開こうとすると「破損した」や上記画像のような

このフォームまたはレポートには、現在のデータベース形式に対応していない変更が含まれています。フォームまたはレポートは保存されませんでした。
変更を保存するには、空白セルがあるlayoutを削除するか、フォームまたはレポートの”HasModule/コード保持”プロパティを「いいえ」に設定してください。

が表示される場合があります。この説明文を見てどこを直せばいいのかがわかるのであれば、その部分を修正すれば良いですが、ほとんどの場合がどこを修正すればいいのかわからないと思います。

 前置きが長くなってしまいましたが、上位バージョンから下位バージョンへ変換した時に上記メッセージ表示されて下位バージョンで動かない、フォームやレポートが保存できない場合の対処方法を下記に明記しておきます。ただし、下記方法が完璧とは限りません。状況や環境、ファイルの作り方などによってはうまくいかない場合もありますので、あくまでも参考程度と考えてください。

前提条件

 下記方法はAccess 2010のファイルを2003で動くように変換する方法です。OSはいずれもWindows XPで、Accessファイルの中にはテーブル、クエリ、フォーム、レポート、モジュールがあるものとし、マクロは含まれていません。モジュールが含まれていることからわかるように、各動作はVBAのプログラムで作ってあります。

VBAのエクスポート

 まずは下位バージョンで動かしたいファイルをAccess 2010で開きます。そして、そのファイル内のプログラムをVBAで開きます。プロジェクトエクスプローラーでプログラムが書かれているフォーム、レポート、標準モジュール、クラスモジュールの全てをエクスポートして任意のディレクトリに保存します。

プロジェクトエクスプローラーで各モジュール、オブジェクトのプログラムをエクスポートする

プロジェクトエクスプローラーで各モジュール、オブジェクトのプログラムをエクスポートする

コード保持

 次にフォームとレポートのプロパティシートに「コード保持」のプロパティが「その他」タブにあるので「はい」になっている場合は「いいえ」に変更します。

「コード保持」のプロパティを「いいえ」に変更

「コード保持」のプロパティを「いいえ」に変更

すると

このフォームまたはレポートを保存すると、フォーム モジュールまたはレポート モジュールのコードが削除されます。

の確認メッセージが表示されます。プログラムは全てエクスポートしてあるので「はい」をクリックし、全てのフォームとレポートをこのように変更します。

下位バージョンに変換

 リボンの中に「ファイル」という項目があるので選択し、サイドメニューから「保存して発行」をクリック。すると「ファイルの種類」から「データベースに名前を付けて保存」を選択し、右から「Access 2002-2003データベース(*.mdb)」を選択し、「名前を付けて保存」ボタンをクリックします。あとはファイルを保存する場所を決めるダイアログボックスが表示されるので、任意の場所にmdbファイルを保存します。

「Access2002-2003データベース」へ変換

「Access2002-2003データベース」へ変換

2003で成形

 ここまではAccess 2010で行ってきましたが、ここからはAccess 2003で行います。Access 2003で上記で出力したmdbファイルを開きます。特に問題がなければ、mdbファイルは普通に開くことができますが、もし、何か不具合があれば開くことはできません。その場合は新規にmdbファイルを作って、先のファイルからインポートするなどの対処が必要になるか、下位バージョンの変換は諦める必要があるかもしれません。

 無事に開くことができたファイルにはVBAのプログラム部分がありませんので、VBAを開いてプロジェクトエクスプローラーの「標準モジュール」や「クラスモジュール」を右クリックして、先ほどエクスポートしたモジュールやクラスのファイルをインポートします

 フォームやレポートも同じようにインポートできますが、もし、できない場合はエクスポートしたプログラムはエディタ(メモ帳や秀丸など)で開くことができるので、そのままコピー&ペーストを行えばいいでしょう。先頭に「VERSION 1.0 CLASS」や「BEGIN」~「END」、「Attribute VB_~」などが書かれているので削除してしまいましょう。

 あと、忘れがちなのが参照設定です。バージョンが変わっていることもあり、まったく同じバージョンのライブラリが無い場合もありますので、その辺はケースバイケースで設定しましょう。必要があればプログラムの変更も。

最後に

 以上でAccess2010から2003へ変換する方法ですが、先にも書いたとおり、うまくいかない場合もあります。その時は別の方法で対応してください。

Accessのデータベースのツボとコツがゼッタイにわかる本

著者/訳者:立山 秀利

出版社:秀和システム( 2008-11-25 )

定価:

Amazon価格:¥ 17,082

単行本 ( 287 ページ )

ISBN-10 : 4798021237

ISBN-13 : 9784798021232