AccessVBA 基礎文法最速マスター

「AccessVBA 基礎最速マスター」を別Wikiサイトにて鋭意作成中。

もっとも単純なAccessプログラミング |AccessVBAベーシック

”プログラミング”というものへの苦手意識を払拭するために、まずは簡単なAccessVBAプログラムを作ってみましょう。


1.MDBファイルの作成
Accessを起動し、”空のデータベース”でMDBファイルを作成してください。
名前は任意ですが、ここでは「メッセージの表示.mdb」としましょう。
保存場所はどこでも良いです。

2.テーブルの作成
テーブルを”デザインビューでテーブルを作成する”で作成します。

3.レコードを作成する
このプログラムではデータは利用しません。
しかし、MDBファイルには一つ以上のテーブルは必須です。
1行目に氏名と入力し、データ型をテキスト型としてください。

4.テーブルの保存
テーブルを保存します。名前は「テーブル1」としてください。
主キーの設定を促すダイアログが出るので、”はい”と入力してください。
テーブルのウィンドウを閉じてください。

5.フォームを作成する
データベースウィンドウの左側、”フォームと書かれたところを選択してください。
フォームを”デザインビューでフォームを作成する”で作成します。

6.フォームにボタンを配置する
メニューバーの[表示] → [ツールボックス]がアクティブになっていることを確認します。

以下作成中

SelectObject | DoCmdオブジェクト一覧

【機能】
指定したデータベースオブジェクトを選択し、アクティブにします。

【構文】
DoCmd.SelectObject オブジェクトの種類 ,オブジェクト名 ,ナビゲーションでの選択

【引数】
SelectObjectの引数
引数 定数 説明
オブジェクトの種類 acTable 対象のオブジェクトをテーブルにする
acQuer 対象のオブジェクトをクエリにする
acForm 対象のオブジェクトをフォームにする
acReport 対象のレポートをレポートにする
オブジェクト名 ― 対象のオブジェクト名を指定する
データベースウィンドウでの選択
(省略可)
True データベースウィンドウ上で選択する
False
(既定)
開いているオブジェクトのみ選択する





【例文】

OpenReport | DoCmdオブジェクト

【機能】
レポートを開く

【構文】
 DoCmd.OpenReport レポート名 ビュー, フィルタ名 フィルタ条件式 ,ウィンドウモード OpenArgs

【引数】

OpenReportの引数
引数 定数 説明
レポート名 ― 開くレポート名
ビュー

(省略可)
acViewNormal

(規定)
レポートを印刷する
acViewDesign デザインビューで開く
acViewPreview 印刷プレビューで開く
acViewReport レポートビューで開く
acViewLayout レイアウトビューで開く
フィルタ名

(省略可)
― クエリ名を指定する
フィルタ条件式

(省略可)
― SQL文を指定する
ウィンドウモード

(省略可)
acWindowNormal

(規定)
通常の状態で開く
acHidden 非表示状態で開く
acIcon 最小化状態で開く
OpenArgs

(省略可)
― 文字列を渡す



【例文】

OpenForm | DoCmdオブジェクト

【機能】
フォームを開く。

【構文】
DoCmd.OpenForm フォーム名, ビュー, フィルタ名, フィルタ条件式 データモード, ウィンドウモード ,OpenArgs

【引数】

OpenFormメソッドの引数
引数 定数 説明
フォーム名 ― 開くフォーム名
ビュー

(省略可)
acNormal

(規定)
フォームビューで開く
acDesign デザインビューで開く
acPreview 印刷プレビューで開く
acFormsDS データシートで開く
acLayout レイアウトビューで開く
フィルタ名

(省略可)
― クエリ名を指定する
フィルタ条件式

(省略可)
― SQL文を指定する
データモード

(省略可)
acFormPropertySettings

(規定)
フォームのプロパティ
acFormAdd 追加モードで開く
acFormEdit 編集モードで開く
acFormReadOnly 読み取り専用モードで開く
ウィンドウモード

(省略可)
acWindowNormal

(規定)
通常の状態で開く
acHidden 非表示状態で開く
acIcon 最小化状態で開く
OpenArgs

(省略可)
― フォームに渡す文字列


【例文】

OpenQuery | DoCmdオブジェクト一覧

【機能】
クエリを開く。

【構文】
DoCmd.OpenQuery クエリ名,ビュー,データモード

【引数】

OpenQueryメソッドの引数
引数 定数 説明
テーブル名 ― 開くクエリ名
ビュー
(省略可)
acViewNormal
(規定)
データシートビューで開く
acViewDesign デザインビューで開く
acViewPreview 印刷プレビューで開く
データモード
(省略可)
acAdd 追加モードで開く
acEdit
(省略可)
編集モードで開く
acReadOnly 読み取り専用モードで開く

【例文】

OpenTable | DoCmdオブジェクト

【機能】
指定したテーブルを開きます。

【構文】
DoCmd.OpenTable テーブル名,ビューの種類,データモード

【引数】

OpenTableメソッドの引数
引数 定数 説明
テーブル名 ― 対象のテーブル名
ビューの種類

(省略可)
acViewNormal データシートビューで開く
acViewDesign デザインビューで開く
acViewPreview 印刷プレビューで開く
データモード

(省略可)
acEdit

(規定)
編集モード
acAdd 追加モード
acReadOnly 読み取り専用モード

データベースオブジェクト

Accessでデータベースを作るということは、
テーブル、クエリ、フォーム、レポート、マクロ、モジュール
などを作成することを意味します。
これはExcelファイルを作ることがシートやオートシェイプや時にはマクロを作ることと同じであることと似ています。
それらの異なる機能を持つ部品のかたまりがAccessデータベースなのです。
この「部品」のことをデータベースオブジェクトと呼びます。

テーブル
すべてのデータはこのテーブルに格納されます。テーブルは、ちょうどエクセルのシートとほぼ同じ外観をしています。新しいテーブルを作成するときには、フィールドの定義をしなければなりません。フィールドとは、Excelシートでいうと”A列”のことです。 同じテーブルのフィールドの値は、重なってはいけません。また、フィールドには必ずデータ型を指定する必要があります。データ型とは、その行(レコード)に、日付とか数値とか文字列とか、どんな種類の値が入るのか?ということです。Excelで、電話番号を入力したいセルの書式設定を”文字列”にしておかないと、先頭の0が省略されてしまいますね?あれと同じく、適切なデータ型を指定しておかないと、処理がおかしくなってしまうのです。 フィールドの定義が適切に終わると、もうデータを入力していくことができます。 一つのAccessデータベースファイルには、複数のテーブルを作成することができます。
クエリ
クエリとは、テーブルに格納されたデータを抽出、加工する機能です。データベースがデータベースであるゆえん、といっても良い重要なオブジェクトです。 Excelの機能でいうと、オートフィルタに似ています。たとえば、社員録のシートで所属部署が”総務部”でフィルタをかけると、総務部とある列だけが表示されますね?あれと似ています。 クエリを使用するにはこのように条件を指定する必要があります。 抽出だけでなく、複数のテーブルをひとつの条件で指定して表示したものを新しいテーブルとして作成することもできます。
フォーム
テーブルに格納されたデータの表示と追加・修正をするための専用画面です。社員の細かいデータまで含めたテーブルがあるとして、それの名前と年齢だけが分かればよい、というときには、その条件のクエリを作り、次に専用のフォームを作って表示させます。 Accessに本格的なGUI(グラフィカルユーザインタフェース)をもたらします。よくみるボタンやリストボックスやタブなどを使用することができます。
レポート
フォームがユーザがデータベースに値をインプットさせるためのオブジェクトだとすると、レポートはアウトプットするためのオブジェクトです。特に帳票などに紙に印刷することを主なターゲットとしています。よって、特に紙に印刷する必要性のないデータベースなら、使う機会は無いかもしれません。
マクロ
簡単な機能の自動化のためにあります。マクロはExcelにもあるので理解はしやすいでしょう。しかし、Excelと違い”マクロの記録”機能はないです。あらかじめ用意されてアクションを選んでフォーム上のボタンなどに紐付けるということをします。この方法はAccessのライバルであるFileMakerのそれと似ています。

モジュール
VBAによるプログラミングを書いて保存しておく場所です。マクロで可能なことはすべてVBAで作成することができます。ただし、マクロのように”やりたいこと”(アクション)が分かり易く表示はされません。自分でVBAコードを書く必要があります。 とはいえ、その分高機能、多機能です。マクロには細かい条件による処理分けやエラー時の処理などが規定できます。実際、Acceessの作成者は、最初はマクロから始めても、じきに物足りなく、VBAの勉強を始めるのが一般です。 逆に言うと、それほどの多機能、高機能を求めないのであれば、使う機会がないままデータベースを運用していくことも不可能ではありません。
ページ
ウェブブラウザからデータベースに接続させる仕組みです。ただ、あまり出来がよろしくなく、2007からはなくなりました。本サイトでも紹介することはあまりないでしょう。

<まとめ>
データをインプットするオブジェクトです。

データをアウトプットするオブジェクトです。

データをインプットするための画面(主としてユーザのため)です。

データをアウトプットするための画面(主としてプリンタのため)です

データをプログラミングするためのオブジェクトです。

データをある程度自動化するためのオブジェクトです(プログラミングには劣ります)。