none
Offce2016Pro(VBA7)のVBEでAccess2003(VBA6)の開発は可能ですか? RRS feed

  • 質問

  • お世話になります。

    Microsoftコミュニティにて質問させて頂いたところ、こちらをご紹介いただきました。

    現在、顧客情報等をAccess2003で開発したシステムにて管理しており、

    そのmdbファイル群に含まれるフォームの書式などを修正する必要があり、

    修正箇所が数百に登るためVBAを使って一括修正を考えています。

    私の使う予定のPCはWindows10+Office2016Professionalとなり、

    そのVBEにて参照設定を行うなどすればAccess2003のVBAを使えると良いのですが、

    どのような不都合が考えられるでしょうか?


    2003のサポートは切れていますので後々置き換える予定にはなっていますが、

    すぐには無理なので、それまでの凌ぎとなります。

    もし2017では無理であれば、仮想環境にOffice2003を入れて使うことも考えています。


    以上、お教えいただけますと助かります。

    よろしくお願い致します。

    2017年8月28日 2:28

回答

  • まず、Access 2003 で adp 形式を使っていた場合、これは移行できません(adp 形式は 2013 で廃止されました)。
    mdb については、Access 97 形式は使えなくなっていますが、2000-2003 形式のものであれば開けます。
    しかしながら、2016 の VBA で編集した mdb を、2003 の VBA で利用するといったことはできません。

    移行に当たっての変更点ですが、まずデータベースエンジンが異なります。accdb を使うにしても mdb を使うにしても、変換後は従来の DAO 3.6 / Jet OLE DB 4.0 ではなく、ACEDAO のライブラリに変更になります。(これは、Recordset2 型などといった、新機能に対応するための変更です)

    ライブラリの使い方として大きな変化は無いのですが、ライブラリの違いにより「省略可能な引数を省略した場合の既定値」が異なるといった事象が発生します。
    また、2007 以降の SandBox の仕様変更により、SQL 等で VBA 関数を使っていた場合、それらが使えなくなるケースがあるのでご注意ください。

    参考情報:
    Access2003で作られたmdbファイルをAccess2016で動かしたときの不具合について


    2017年8月28日 8:24

すべての返信

  • まず、Access 2003 で adp 形式を使っていた場合、これは移行できません(adp 形式は 2013 で廃止されました)。
    mdb については、Access 97 形式は使えなくなっていますが、2000-2003 形式のものであれば開けます。
    しかしながら、2016 の VBA で編集した mdb を、2003 の VBA で利用するといったことはできません。

    移行に当たっての変更点ですが、まずデータベースエンジンが異なります。accdb を使うにしても mdb を使うにしても、変換後は従来の DAO 3.6 / Jet OLE DB 4.0 ではなく、ACEDAO のライブラリに変更になります。(これは、Recordset2 型などといった、新機能に対応するための変更です)

    ライブラリの使い方として大きな変化は無いのですが、ライブラリの違いにより「省略可能な引数を省略した場合の既定値」が異なるといった事象が発生します。
    また、2007 以降の SandBox の仕様変更により、SQL 等で VBA 関数を使っていた場合、それらが使えなくなるケースがあるのでご注意ください。

    参考情報:
    Access2003で作られたmdbファイルをAccess2016で動かしたときの不具合について


    2017年8月28日 8:24
  • 詳細なご回答、誠にありがとうございます。

    2000-2003形式のmdbを2016で開き、2016のVBEで2003のVBAを編集したものを2003の環境で使用できず、また、2000-2003形式のmdbを2016で開いたときVBAがそのままでは動作しないケースがあり、2016の環境では検証も行えない、と理解いたしました。

    ありがとうございました。

    2017年8月30日 3:20
  • VBA ではなくて、ADO.NET + JET または ACE を利用した .NET アプリを作るということは見当範囲外ですか?
    2017年8月30日 4:37
  • ご提起ありがとうございます。

    ゆくゆくはmdbファイルベースではなく2層以上のシステムをとは考えておりますが、私がやるか外注に出すかなどの問題もありますし、その完成を待つ前の応急として、まずは修正箇所が数百に登るフォーム・レポートの表示書式の早急な一括修正のニーズがあり、VBAによる作業自動化を考えております。

    8/31 12:24追記

    こちらのサイトをご紹介頂いた元の方のスレッドで、近い環境にて検証して頂いた回答を頂きました。変更可能である可能性が高いとのことです。

    https://answers.microsoft.com/ja-jp/msoffice/forum/msoffice_access-mso_win10-mso_2016/offce2016provba7%E3%81%AEvbe%E3%81%A7access2003vba/9d6fe24f-15b5-4920-865b-f9122ca0001b?tm=1503548094338&auth=1

    マルチスレッド質問のような形になってしまい申し訳ありません。よろしくお願い致します。


    • 編集済み M,M, 2017年8月31日 3:27 追記
    2017年8月31日 3:16