MDB(ACCDB)生成/テーブル定義取得ツール

Microsoft Accessのデータベース部分(*.mdb、*.accdb)を生成したり、作成済みのMDB、ACCDBの定義情報を取得します。
これがあればMDB(ACCDB)の取り扱いにAccessはなくても済むでしょう。   MDB(ACCDB)ファイルは本来、Microsoft Accessのデータベースですが、フォームやレポート、マクロなどを使わずに データベース本体だけを扱うのであれば、Microsoft Accessがインストールしてある必要はありません。 これは、ADOでデータを取得する。」から数ページで説明している通りですが、 もし、Excel単体環境などでそのまま動かなくても、マイクロソフトサイトから「Microsoft Access データベース エンジン 2010 再頒布可能コンポーネント」をダウンロードさせてインストールすれば、 現存のWindowsなら動作可能だと思います。(Excel2010以降のバージョンの環境が必要です)



データの表示や更新はこれらの方法で可能でしたが、データベースの作成やテーブルの作成、初期データの投入などは、Microsoft Accessがあった方が便利です。 ですが、Microsoft Accessがあっても定義情報のドキュメントを出力する機能がなく、結局、別にExcelなどで手作業で定義一覧を作表しているのが実態ではないでしょうか。
また、Officeインストール済みPCを購入した場合はAccessは含まれていないという問題もあります。



そこで、Excelで作表したテーブル定義に従ってデータベースを作成する、あるいは現存のデータベースの定義情報を一括してExcel上に自動的に表示させるツールがあったら便利ですよね。
と言うわけで、作成してみたのがこのツールです。とりあえず「実用範囲」的に考えて、Microsoft Accessのフルスペックをハンドリングできるわけではないのですが、 私が社内でExcelをユーザーインタフェースにして利用している範囲では充分に利用できるように考えてあるので、 このようなご要望のある方は試してみて下さい。



このページのサンプルは以前はMDB版とACCDB版にExcelブックが分かれていたのですが、 64ビット版Excelの対応の作業の中で統合可能だと判明したので1ブックに統合させたました。



MDBACCDBかはファイル名を指定する時の「ファイルの種類」で選択可能です。
64ビット版Excelの対応を行ないました。   このページのサンプルはAPIを使用しております。
Office365やOffice2019では、64ビット版になるという情報があったため、 当サイトでも順次この対応を行ない、動作確認ができたものからページを更新しています。



ですが、APIとは関係なく、旧MDBの方は64ビット版Excelでは「DBEngine」がクラス未登録でエラーになります。
調べたところでは「Microsoft DAO 3.6 Object Library」を参照設定が「参照不可」にはならないのですが動作できない模様で、 これを「Microsoft Office 1x.0 Access database engine Object Library」の参照設定に変更したところ、 32ビット版Excelでも64ビット版Excelでもこのページのサンプルは動作できるようになりました。
このページのサンプルはOffice2007以前のバージョンでは動作しない可能性がありますが、既にマイクロソフトのサポート切れとなっているバージョンで こちらにも環境がないので確認できません。 201911月の時点ではOffice2010〜2019で動作できています。
20201月に不具合修正を行ないました。   MDB(ACCDB)の利用上には実害はないのですが、説明(Description)に登録している日本語の項目名称や備考の項目間のカンマ数の制御に誤りがありました。 項目名称が3列の利用に満たない状態で備考がある場合に、作成したMDB(ACCDB)から「テーブル定義情報の取得」を行なうと、 本来備考になるべき文字列が項目名称の右列に配置されてしまう事象が見つかり、これを修正しています。



このページから最新版をダウンロードさせてご利用下さい。

まずはどんなものか見てみましょう。
ダウンロードさせて解凍すると、「MDB(ACCDB)テーブル定義.xltm」というExcelテンプレートが作成されます。

MDBテーブル定義.xltmの画面
(この画像をクリックすると、サンプルのダウンロードができます。)

「テーブル定義情報の取得」を行なう場合は、テンプレートにシートが作成されてしまうし、カレントフォルダが特定できないので、一旦「Excelマクロ有効ブック(*.xlsm)」で名前を付けて保存してから以降の作業を行なって下さい。 頻繁に使うものでもないでしょうから、特にマクロの起動ボタン等は用意しませんでした。「表示」タブの「マクロ」からプロシージャを起動させて下さい。

入力方法などを細かく説明するより、まずは既存のMDBファイル(又はACCDBファイル)からテーブル定義情報を取り込んでみることにしましょう。

マクロ「テーブル定義情報の取得」を起動

リボンの「表示」タブの「マクロ」か、Alt+F8でマクロの起動のウィンドウを表示させると、そこには「MDBファイル作成」と「テーブル定義情報の取得」「テーブル定義情報の追加」の3つが表示されます。 ここでは、「テーブル定義情報の取得」を選択して、「実行」ボタンをクリックして下さい。

すると、次にMDBファイルを選択する画面(「ファイルを開く」のダイアログ)が表示されます。
ACCDBファイルを選択する場合は、右下の「ファイルの種類」プルダウンを「ACCDBファイル(*.accdb)」に変更して下さい。

MDBファイルの選択

この画面説明では、「データベース操作(VBA応用)の説明で使用した社内配属情報のMDBを使用することにします。
上記リンク先のページのサンプルにはサンプルデータをインポートするものや読み出して配属一覧を表示するものも含まれているので、すぐに動作確認が行なえると思います。
該当するMDB(ACCDB)ファイルを選択して、「開く」をクリックすると、即座に処理が開始されます。

処理結果はこのように表示されます。

「テーブル定義情報の取得」の処理結果

このように、テーブル1つが1シートになって、各フィールドが順に表示されます。
「項目名称」が日本語になっているのは、元々この機能から「MDBの作成」を行なっているからで、 作成時点の「項目名称」の登録内容をフィールドの「説明」に収容してあります。 「テーブル定義情報の取得」時はこの「説明」から「項目名称」を作成するようになっています。

新規のデータベース作成時に利用すると効果的です。
上記で利用したサンプルは、「テーブル設計書」を実際に運用しているデータベースから起こしているようなことになります。
本来であれば、「テーブル設計書」が先に作られていて、それを元に実際のデータベースを作成するのだと思いますから、その手順をやってみましょう。

一般的なテーブル定義!?

先ほどの解凍した中の「MDB(ACCDB)テーブル定義(テーブル操作サンプル).xlsm」を開きます。



このように「テーブル設計書」を作成して管理します。プログラムコードの作成段階ではこの「テーブル設計書」を参照して作成するわけですが、その前に、今度は「テーブル設計書」と実物のデータベースの設定作業の「同期」に神経を使うことになるわけです。



「テーブル設計書」から実物のデータベースやテーブルが作られるようにしておけば、その時点で「同期」は取られているわけです。目視で照合する必要はありません。
当サイトではSQLServerについても同じような機能を持つExcelSQLServerツール」という用意しています。

では、この「テーブル設計書」からデータベースファイル(*.MDB、*.ACCDB)を作成してみましょう。

「MDBファイル作成」の起動

操作は、すべてのテーブル定義が完成したら、上記と同様に「MDBファイル作成」のマクロを起動します。

すると、作成するMDBファイルの出力先フォルダとファイル名を指定するウィンドウが現われます。
ACCDBファイルを作成する場合は、「ファイルの種類」プルダウンを「ACCDBファイル(*.accdb)」に変更して下さい。

「MDBファイル作成」の起動

ここでMDB(ACCDB)のファイル名を入力して「保存」をクリックすれば、データは空の状態でテーブルのみ作成されたMDB(ACCDB)ファイルが作成されます。

テーブル作成時は、完全ではありませんが最低限の条理チェックは入れてあるので、

「MDBファイル作成」でのエラー表示

このようにエラーがあった場合はデータベースの作成は行なわれません。エラーが表示されなければ数秒もかからずデータベースは作成されるはずです。

このツールで作成されるMDBは、Microsoft Access 2002レベルのものになります。
(ACCDBの場合はMicrosoft Access 2007レベル)
Microsoft Accessをお持ちなら、作成されたMDB(ACCDB)ファイルを開いてみると、

Accessでテーブル定義を確認

このようにExcelシート上に設定した通りにテーブルが作成されていることが確認できると思います。

データベースの一括作成のほか、テーブルのみ追加する機能も用意しました。
既に作成して運用を開始しているデータベースに対して、新しい機能を追加するためにテーブルを追加することはよくあることだと思います。 このようなケースでは、追加したいテーブルのシートを選択した状態で、「テーブル定義情報の追加」を起動させて下さい。

「テーブル定義情報の追加」を起動


起動すると、次にデータベース(*.MDB)を指定するダイアログが表示されるので、テーブルを追加するデータベース(*.MDB)を選択して、OKをクリックします。 ACCDBファイルを選択する場合は、右下の「ファイルの種類」プルダウンを「ACCDBファイル(*.accdb)」に変更して下さい。

テーブルを追加するデータベース(*.MDB)を選択

処理はこれだけで終了し、表示シートに指定したテーブルが追加されます。

「この手」のサンプルやフリーソフトはたくさんあるかも知れません。
VBAに強い人は、仕事の上でこのような「ツール」は独自に作られていることでしょう。ネット上のAccess関連のサイトではサンプルやフリーソフトもあるかも知れません。 機能としては大きく違うことはないと思いますが、今回のものはちょっと工夫を入れてあります。
実は、この上のAccessの画面サンプルを見ていただくと分かりますが、テーブルの「説明」のところにExcelシート上に登録してあった日本語名を登録してあります。 Excelシート側では「項目名称」の3列と「項目説明」に入力されていた文字列をテーブルの「説明」のところにカンマ区切りにして登録させておき、 次回、「テーブル定義情報の取得」の方を行なった時には、この日本語の「項目名称」などもできるだけExcelシート上に再現されるように配慮してあります。

ダウンロードはこちら。

←MDB(ACCDB)TableDefines1.zip
      (149KB)