ACCESS VBA Create Tableでテーブルを作成する方法

Create Tableでテーブルを作成する方法

ACCESS VBAでテーブルを作成する場合に利用するのがCreate Tableステートメントです。

今回は、ACCESS VBA Create Tableでテーブルを作成する方法をご紹介します。


こんにちは。
はこにわガジェット (@hakoniwagadget) です。

ACCESSを使った売上管理、顧客管理などのデータベース開発を行っています。
ACCESSは基本機能だけでも十分便利ですが、VBAを使うことで格段に使いやすいデータベースを作成可能です。
この記事ではACCESSでのVBAの使い方をご紹介していきます。

VBAでテーブルを作成する方法

VBAを使いこなしてくると、DLookup関数やDsum関数でVBA側からテーブルの値を取得することも多くなるでしょう。
そうなると逆に計算した値や抽出したレコードを元に、VBAでテーブルを新しく作成するというケースも出てきます。

しかし、VBAに標準で用意された関数では、テーブルから値を取得したり、クエリやフォームの操作はできるものの、テーブルを作成でません、

VBAから直接テーブルを操作するためには、SQLというデータベース言語の利用が必要になります。
SQLを使うと、レコードの新規作成、更新、抽出、削除、グループ化など様々な操作ができます。

SQLはMicrosoft SQL ServerやOracleなど、多くのデータベースソフトウェアでもサポートされており、グローバルで一般的なデータベース操作言語と言えます。
今回はSQLのCreate Tableステートメントを使ってテーブル作成をします。

Create Tableステートメント

Create Tableステートメントは以下の構文で利用します。

テーブル名を指定した後はフィールド名とデータ型を連続して指定していきます。
また、主キーにしたいフィールドにはデータ型の指定の後でPRIMARY KEYを付与します。

SQLを使った新規テーブル作成プログラム

では実際に、SQLを使ってテーブルを作成するプログラムを見てみましょう。

ACCESSでSQLを使用する場合は、DoCmd.RunSQLメソッドを利用します。
DoCmd.RunSQLのあとの””で囲われた部分が実行されるSQL文です。

テーブルを作成する際には、CREATE TABLEという構文を使用します。
上記の例では、「T_create1」というテーブル名で、フィールドにIDと日付があるテーブルを作成する、という命令をしています。

ID、日付の後にある、LONGやDATEはデータ型を指定しています。
LONGは数値型(長整数型)、DATEは日付/時刻型を指定します。

ACCESSのデータ型については以下の記事にまとめていますので参照ください。

データ型の種類と使い分け

また、PRIMARY KEYは主キー設定の指定になります。
上記のプロシージャを実行すると、下記のテーブルが作成されます。

デザインビューで見ると下記の設定で、指定通りのデータ型になっていることがわかります。

なお、SQL文には他にも以下のような種類の構文があります。

SELECT ・・・ FROM ・・・レコードの抽出
UPDATE ・・・ SET ・・・レコードの更新
INSERT ・・・ INTO ・・・レコードの追加
DELETE ・・・ from ・・・レコードの削除

既存のテーブルから新しいテーブルを作成するプログラム

上記で説明したのは、最も基礎的なテーブル作成の方法ですが、ACCESSを使用していてVBAでテーブルを作成する際は、この方法はあまり使用しません。
ACCESS自体がデータベースソフトウェアなので、既存のテーブルやクエリを基に新しいテーブルを作成するケースのほうが多いのです。

そこで、既存のテーブルを基に新しいテーブルを複製する方法もご説明します。

こちらも同様に DoCmd.RunSQL を使用します。

SQL文の内容は、TRN_売上テーブルから( FROM TRN_売上 )、すべてのフィールドを選択し( SELECT * )、T_create2テーブルを作成する( INTO T_create2 )というものです。

この命令を実行するとテーブルが複製されます。
もし、テーブルのフィールドフォーマットのみを使用したいので、レコードは不要という場合には、上記の後に

と、DELETEでレコードを削除する命令を実行すれば問題ありません。

なお、こうしたレコード操作を行うと、実行時にACCESSの画面上では下記のような確認メッセージが表示されます。

VBAで自動実行している際は、ユーザーにこうした画面を見せたくないというケースも多いでしょう。
そんな時はDoCmd.SetWarningsを使用することでメッセージの表示を回避できます。

ここまでの一連の流れをまとめてコードで記載すると下記のようになります。

最初の「 DoCmd.SetWarnings False 」でメッセージ表示をしないようにしたうえで、SQLによるテーブル操作を行い、最後に「 DoCmd.SetWarnings True 」でメッセージ表示を元に戻しています。

以上、Create Tableでテーブルを作成する方法をご紹介しました。


ACCESSを使いこなせば、業務の効率化や自動化が実現できます。
しかし、自分でACCESSを学ぶには時間がない、難しそうで不安、という方も多いでしょう。

そんな時は、ACCESS開発歴20年以上、過去に100以上のACCESSデータベースを開発してきた私(@hakoniwagadget)にお任せください。

ACCESSの新規開発、既存のACCESSの修正、ACCESSの操作レッスンなど様々なサービスをご提供しています。
ご興味のある方は下記のサービス一覧をご覧ください。

サービス一覧

最後までお読みいただき、ありがとうございました。