概要
| mdbはAccess 2007より前から使われてきた旧形式、accdbはAccess 2007で導入され、現在のAccessでも標準となっている形式です。新しく作るのであれば、基本はaccdbを選びます。ただし、Access 2003以前のユーザーとの共有、レプリケーション、旧ユーザーレベルセキュリティなど、mdbを残す理由がある環境もあります。さらに、mdbをaccdbへ変換しても、VBA・API・ActiveX・OCX・32bit/64bit・外部連携の問題まで自動的に解決するわけではありません。 |
この記事でわかること
- mdbとaccdbの基本的な違いと、それぞれが使われてきたAccessの世代
- accdbで利用できる新しい機能と、mdbを残す必要があるケース
- mdbとaccdbのファイル容量上限がどちらも原則2GBであること
- 現在新しくAccessを作る場合に、どちらを選べばよいか
- mdbからaccdbへ安全に変換する具体的な手順
- 拡張子を変換しても解決しないVBA・ActiveX・32bit/64bitなどの問題
- 古いAccessをMicrosoft 365やAccess 2024へ移行するときの確認ポイント
この記事の主な内容
1.Accessのmdbとaccdbとは?まず30秒で違いを理解しよう
2.mdbとaccdbの違いを7項目で比較
3.現在使うならmdbとaccdbのどちらを選ぶ?
4.mdbからaccdbへ変換する方法|安全な手順を解説
5.mdbをaccdbへ変換しても解決しない問題
6.古いAccessを最新環境へ移行するときの注意点
7.まとめ|ファイル形式の変換とシステム移行は分けて考える
8.よくある質問(FAQ)
想定読了時間:約13~16分
1. Accessのmdbとaccdbとは?まず30秒で違いを理解しよう
Accessのデータベースファイルには、代表的な拡張子として「.mdb」と「.accdb」があります。どちらもAccessのテーブル、クエリ、フォーム、レポート、マクロ、VBAなどを保存するためのファイル形式ですが、登場した世代と利用できる機能が異なります。
mdbはAccess 2007より前から利用されてきたファイル形式です。一方、accdbはAccess 2007で導入され、現在のMicrosoft 365版AccessやAccess 2024でも新規データベースの標準形式として使われています。

| 30秒で覚えるなら 「mdb=旧形式」「accdb=Access 2007以降の標準形式」と覚えて問題ありません。ただし、mdbにはAccess 2000形式、Access 2002-2003形式など複数の世代があり、同じ.mdbでも互換性は完全に同じではありません。 |
同じ.mdbでも中身の世代が違う
「拡張子がmdbなら全部同じ」と考えるのは正確ではありません。Accessでは、Access 2000形式やAccess 2002-2003形式など、同じ.mdb拡張子でも異なるファイル形式が存在します。
現在のAccessでは、Access 2000形式やAccess 2002-2003形式のmdbを開いて利用できるケースがあります。ただし、Access 97などさらに古い形式は、現在のAccessでそのままaccdbへ直接変換できない場合があります。古いmdbほど、作成バージョンの確認が重要です。

2. mdbとaccdbの違いを7項目で比較
mdbとaccdbの違いは、単にファイル名の末尾が違うだけではありません。対応するAccessの世代、新機能、旧機能との互換性などに違いがあります。まずは全体を比較してみましょう。

| 比較項目 | mdb | accdb |
| 主な世代 | Access 2003以前から利用 | Access 2007以降の標準 |
| 現在の新規作成 | 互換性要件がある場合に選択 | 基本的にこちらを推奨 |
| 添付ファイル型 | 非対応 | 対応 |
| 複数値フィールド | 非対応 | 対応 |
| 計算型フィールド | 非対応 | Access 2010以降で対応 |
| レプリケーション | 利用可能な旧形式あり | 非対応 |
| ユーザーレベルセキュリティ | 旧形式で利用可能 | 非対応 |
| Access 2003以前から開く | 可能なmdb形式あり | 不可 |
| 最大ファイルサイズ | 2GB-システム領域 | 2GB-システム領域 |
accdbで追加された主な機能
accdbには、旧mdb形式では利用できない新しい機能があります。代表的なものは次の通りです。

- 添付ファイル型:画像、PDF、Office文書などのファイルをレコードへ添付できる
- 複数値フィールド:1レコードに複数の選択値を保持できる
- 改善された暗号化:データベースパスワードと暗号化機能を利用できる
- 長いテキストの履歴管理:AppendOnlyを使って変更履歴を保持できる
- 計算型フィールド:Access 2010以降のaccdbで、式による計算結果をフィールドとして扱える
- データマクロ:テーブルレベルでデータ変更に応じた処理を定義できる
ただし、これらの機能を使えるからといって、すべてのデータベースで積極的に利用すべきとは限りません。例えば複数値フィールドや添付ファイル型は、将来SQL Serverへ移行するときの設計を複雑にすることがあります。長期運用を考える場合は、Accessだけでなく将来のデータベース構成まで見て判断します。
mdbとaccdbの最大容量はどちらも2GB
「accdbの方が新しいので、mdbより大容量なのでは?」と思われることがあります。しかし、Microsoftの現行仕様では、mdbもaccdbもAccessデータベース全体の上限は2GBからシステムオブジェクトに必要な領域を差し引いた容量です。
そのため、ファイル容量が2GBへ近づいているAccessをaccdbへ変換しても、容量問題の根本解決にはなりません。データ量が増えている場合は、フロントエンドをAccessとして残し、データ部分をSQL ServerやAzure SQLへ移行する構成も検討します。

3. 現在使うならmdbとaccdbのどちらを選ぶ?
現在、新しいAccessデータベースを作成するのであれば、基本的にはaccdbを選ぶのが適切です。Microsoftも、ほとんどの場合で旧mdbをaccdbへ保存することを案内しています。
一方で、既存システムは「古い形式だからすぐ変換すべき」と単純には判断できません。利用者のAccessバージョンや旧機能への依存を確認し、移行後に業務が止まらないことを優先します。

| 状況 | 推奨 | 理由 |
| 新しくAccessを作る | accdb | 現在の標準形式で、新機能・現行環境へ対応しやすい |
| Microsoft 365 / Access 2024だけで利用 | accdb | 古いAccessとの互換性を考慮する必要が少ない |
| Access 2003以前の利用者と共有 | mdbを検討 | accdbはAccess 2007以前では開けない |
| 旧レプリケーションを使用 | mdb継続または再設計 | accdbではレプリケーション非対応 |
| 旧ユーザーレベルセキュリティを使用 | mdb継続または再設計 | accdbでは非対応 |
| SQL Server移行を予定 | 形式だけでなく構造を調査 | テーブル設計・データ型・リンク方式が重要 |
mdbを残すこと自体が直ちに問題ではない
mdbは古い形式ですが、利用環境が安定しており、業務上必要な旧機能を使っているなら、すぐに形式変更する必要がないケースもあります。重要なのは「拡張子が古いか」ではなく、現在のWindows・Office環境で安全に運用できるか、将来の保守が可能かという視点です。
4. mdbからaccdbへ変換する方法|安全な手順を解説
mdbからaccdbへの変換は、Windowsのエクスプローラーでファイル名の末尾を書き換える操作ではありません。Accessでmdbを開き、「名前を付けて保存」から新しいデータベース形式としてaccdbのコピーを作成します。
| 重要 「顧客管理.mdb」のファイル名を「顧客管理.accdb」へ変更するだけでは、ファイル形式は変換されません。必ずAccessの保存機能を使用してください。 |
実務では次の順番で進めると安全です。

| STEP | 作業 | 確認ポイント |
| 1 | 元mdbをバックアップ | 変更前の原本を必ず残す |
| 2 | 作成形式・利用環境を確認 | Access 2000 / 2002-2003 / 97等を確認 |
| 3 | mdbをAccessで開く | 起動時エラーや参照切れを記録 |
| 4 | [ファイル]→[名前を付けて保存] | [データベースに名前を付けて保存]を選択 |
| 5 | Accessデータベース(accdb)で保存 | 元mdbとは別名でコピーを作成 |
| 6 | フォーム・クエリ・VBA等をテスト | 検索・入力・印刷・外部連携まで確認 |
Access 97のmdbは特に注意
現在のAccessでは、Access 97形式のmdbを直接accdbへ変換できない場合があります。Microsoftは、Access 2013以降ではAccess 97データベースを直接accdbへ変換できないとしており、Access 2003など旧バージョンを介してAccess 2002-2003形式へ変換した後、さらにaccdbへ変換する手順を案内しています。
古いmdbで作成年代が分からない場合は、いきなり本番ファイルを変換せず、まずファイル形式と依存機能を調査する方が安全です。

5. mdbをaccdbへ変換しても解決しない問題
古いAccessが新しいPCで動かないとき、「mdbだから動かないのでは?」と考え、accdbへ変換すれば直ると思われることがあります。しかし、ファイル形式の変換だけで解決するケースは限定的です。
実際には、古いAccessにはファイル形式以外の依存関係が残っている場合があります。次のような項目は、mdbからaccdbへ変換しても別途確認が必要です。

32bit・64bitの問題は拡張子とは別
Accessが32bitから64bitへ変わると、Windows APIを呼び出しているVBAコードや、32bit専用のActiveX・OCXが動かなくなる場合があります。この問題はmdbかaccdbかではなく、VBAコードや外部コンポーネントの互換性の問題です。
そのため「accdbへ変換できた=64bit対応完了」ではありません。VBAのコンパイル確認、参照設定、フォーム上のActiveX、外部DLL、ODBC接続などを個別に確認する必要があります。

6. 古いAccessを最新環境へ移行するときの注意点
古いAccessをMicrosoft 365やAccess 2024へ移行する場合は、ファイル形式だけを見るのではなく、Accessアプリケーション全体を確認します。特に長年改修されてきたデータベースでは、作成当初にはなかった外部ファイルやVBA処理が追加されていることがあります。

移行前に確認したいチェック項目
| 確認対象 | 確認内容 |
| ファイル形式 | Access 2000 / 2002-2003 / 97など、mdbの世代を確認 |
| VBA | コンパイルエラー、API宣言、参照設定を確認 |
| フォーム・レポート | ActiveX / OCX / 古いコントロールの有無 |
| リンクテーブル | Access、Excel、SQL Server、ODBC等のリンク先 |
| 外部ファイル | CSV、Excel、画像、PDF、固定パス等 |
| メール・印刷 | Outlook連携、プリンタ、PDF出力等 |
| 複数人利用 | フロント・バック分割、ネットワーク構成 |
| データ量 | 2GBへの接近、肥大化、Compact and Repair |
| 将来構成 | accdb継続か、SQL Server / Azure SQLへ移行するか |
データ量が増えているならSQL Server化も検討する
Accessのファイル上限はmdb・accdbとも2GBです。また、利用人数やデータ量が増えると、ファイル形式を新しくするだけでは性能や運用面の課題を解決できません。
このような場合は、Accessのフォーム・レポート・VBAをフロントエンドとして残し、テーブルをSQL ServerやAzure SQLへ移行する構成があります。利用者の操作感を大きく変えずに、データベース部分を強化できる点がメリットです。
| 実務視点 古いAccessの更新では、①ファイル形式、②VBA・ActiveX、③データ構造、④利用人数・データ量、⑤将来のSQL Server化を分けて評価すると、必要な改修範囲を判断しやすくなります。 |
安全に既存Accessを更新する流れ

| STEP | 作業 | 確認内容 |
| 1 | 原本バックアップ | 現行mdbをそのまま保管 |
| 2 | 現状調査 | 形式・VBA・参照・OCX・リンク先を確認 |
| 3 | コピー環境で変換 | accdb化や64bit修正を実施 |
| 4 | 機能テスト | 入力・検索・更新・印刷・連携を確認 |
| 5 | ユーザー確認 | 実業務の主要シナリオで確認 |
| 6 | 本番切替 | 旧ファイルへ戻せる状態で移行 |
| 7 | 移行記録 | 変更点・残課題・利用環境を記録 |
7. まとめ|ファイル形式の変換とシステム移行は分けて考える
mdbはAccess 2007より前から使われてきた旧形式、accdbはAccess 2007以降の標準形式です。現在新しくAccessを作るのであれば、基本的にはaccdbを選ぶのが適切です。
ただし、既存mdbを扱う場合は、拡張子の新旧だけで判断してはいけません。Access 2003以前との互換性、レプリケーション、旧ユーザーレベルセキュリティなど、mdbを残す理由がある環境もあります。
さらに重要なのは、mdbからaccdbへ変換しても、VBA・API・ActiveX・OCX・32bit/64bit・ODBC・外部ファイル連携の問題は別途残る可能性があることです。古いAccessを最新環境へ移行する場合は、ファイル形式の変換とアプリケーション全体の互換性調査を分けて考えましょう。
| そのmdb、accdbへ変換するだけで本当に最新環境へ移行できますか? 古いAccessのファイル形式、VBA、ActiveX・OCX、参照設定、外部連携、32bit・64bitの依存関係を調査し、accdb化・64bit対応・SQL Serverアップサイジングまで支援していますのでお困りごとがありましたらお気軽にご相談ください。 |
よくある質問(FAQ)
Access 2007より前から利用されてきたAccessデータベースのファイル形式です。Access 2000形式やAccess 2002-2003形式など、同じ.mdbでも複数の世代があります。
Access 2007で導入され、現在のAccessで標準となっているデータベース形式です。添付ファイル型や複数値フィールドなど、mdbにはない機能を利用できます。
主な違いは対応Access世代と利用できる機能です。accdbは現行標準形式ですが、Access 2003以前との互換性や旧レプリケーション等が必要な場合はmdbを使うことがあります。
新規作成なら基本的にaccdbです。既存mdbは、旧Accessとの共有や旧機能への依存を確認してから変換を判断します。
Access 2000形式やAccess 2002-2003形式など、一部のmdbは現在のAccessでも開いて利用できます。ただし、さらに古い形式では追加の変換手順が必要になる場合があります。
Access 2013以降ではAccess 97形式を直接accdbへ変換できません。MicrosoftはAccess 2003等を介してAccess 2002-2003形式へ変換した後、accdbへ変換する方法を案内しています。
はい。対応するmdbをAccessで開き、[ファイル]→[名前を付けて保存]からAccessデータベース形式で保存するとaccdbのコピーを作成できます。
いいえ。拡張子名を変更するだけではファイル形式は変わりません。Accessの[名前を付けて保存]を使って変換します。
通常はaccdbのコピーが作成されます。ただし、実務では変換前に元mdbを別途バックアップしておくことを推奨します。
Microsoftの現行仕様では、どちらもデータベース全体で2GBからシステムオブジェクトに必要な領域を差し引いた容量です。
開けません。accdbはAccess 2007より前のAccessでは開いたりリンクしたりできません。
いいえ。ファイル形式を変換しても、VBAのAPI宣言、参照設定、ActiveXや外部ライブラリなどは個別に修正が必要な場合があります。
直りません。32bit・64bitの問題はVBA APIやActiveX・OCX等の互換性であり、mdb/accdbのファイル形式とは別問題です。
accdbは設計変更可能な通常のAccessデータベースです。accdeはVBAソースやフォーム・レポートの設計変更を制限して配布するためのコンパイル済み形式です。
必ずしもそうではありません。利用環境、旧機能、VBA、外部連携、ユーザーのAccessバージョンを確認し、コピー環境でテストしてから判断するのが安全です。
参考情報
Microsoft Support|Which Access file format should I use?
https://support.microsoft.com/en-US/Access/which-access-file-format-should-i-use
Microsoft Support|Convert a database to the .accdb file format
https://support.microsoft.com/en-US/Access/convert-a-database-to-the-accdb-file-format
Microsoft Support|Access specifications
https://support.microsoft.com/en-us/access/access-specifications
Microsoft Support|Change the default file format
https://support.microsoft.com/en-us/access/change-the-default-file-format
Microsoft Support|Deploy an Access application
https://support.microsoft.com/en-US/Access/deploy-an-access-application