[Access 2000/2002/2003/2007対応] ACCESS VBA[実践]プログラミングテクニック
――応用できる基本の書き方

[表紙][Access 2000/2002/2003/2007対応] ACCESS VBA[実践]プログラミングテクニック ――応用できる基本の書き方

紙版発売

B5変形判/496ページ

定価3,828円(本体3,480円+税10%)

ISBN 978-4-7741-3421-5

ただいま弊社在庫はございません。

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

ACCESS VBAでプログラミングをするにあたって,どういうときにはどのようなコードを書けばよいかを目的別に指南する本です。急いでいるときに最初から勉強するのは大変という声にお応えし,とにかくいま困っている,これはどうするのか知りたいというニーズに的確に対応すべくまとめられています。座右に備えておくことで安心できる,著者の豊富な経験から著された適切な解説が魅力です。

こんな方におすすめ

  • これからデータベースプログラミングを勉強する方
  • より良いプログラムの書き方を知りたい方
  • 実際のプログラミングで困ったことがある方

目次

第1章 レコードを操作する

1 カレントレコードを移動する

  • 001 カレントレコードの番号を取得する
  • 002 レコードソースに含まれるレコード数を取得する
  • 003 カレントレコードを移動する
  • 004 レコード番号を使ってカレントレコードを移動する
  • 005 カレントレコードが新規レコードかどうかを調べる

2 レコードを編集する

  • 006 カレントレコードを更新する前に確認メッセージを表示する
  • 007 レコード更新用のボタンを作成する
  • 008 カレントレコードが変更されているかどうかを調べる
  • 009 カレントレコードに対する編集を取り消す
  • 010 新規レコードの追加操作を取り消す
  • 011 レコードを削除する前に独自の確認メッセージを表示する
  • 012 複数のレコードを削除するときに?1レコードずつ確認メッセージを表示する
  • 013 カレントレコードを削除する
  • 014 レコードの複製を作成して同じテーブルに追加する
  • 015 1つのフィールドに複数の値を登録できるようにする

3 レコードを検索する

  • 016 [検索と置換]ダイアログボックスを使ってレコードを検索する
  • 017 コンボボックスで選択した値を使ってレコードを検索する
  • 018 文字列の一部を利用してレコードを検索する
  • 019 次のレコードを続けて検索する
  • 020 レコードが見つからなかったときにメッセージを表示する
  • 021 文字列の一部を使って検索したときに,その文字列を選択状態にする
  • 022 置換機能を作成する
  • 023 該当するデータを一括で置換する機能を作成する
  • 024 文字列の一部を置換する

4 レコードを抽出する

  • 025 テキストボックスに入力した値を利用してレコードを抽出する
  • 026 抽出した結果を解除して,すべてのレコードを表示する
  • 027 抽出したレコード数を調べる
  • 028 抽出結果を表示する前にレコード数を調べる
  • 029 複数の条件を同時に満たすレコードを抽出する
  • 030 抽出条件が複数あるときに,値が入力された条件だけを利用してレコードを?抽出する
  • 031 設定した条件のうち,いずれかの条件を満たすレコードを抽出する
  • 032 クエリを使わずにレコードを抽出する
  • 033 フィルタを解除して,すべてのレコードを表示する
  • 034 オプションボタンで選択した値を使ってレコードを抽出する
  • 035 リストボックスで複数選択した値を使ってレコードを抽出する
  • 036 N個のキーワードを使ってレコードを抽出する
  • 037 数値または日付の範囲を利用してレコードを抽出する

5 抽出結果の見せ方を工夫する

  • 038 トグルボタンを使ってデータを抽出する
  • 039 タブコントロールを使ってデータを抽出する
  • 040 抽出した結果をフォームで確認した後に,レポートにも出力する
  • 041 クエリを使わずに抽出した結果をレポートに出力する
  • 042 抽出した結果を新しいテーブルに保存する
  • 043 抽出した結果を既存のテーブルに追加する

6 レコードを並べ替える

  • 044 指定したフィールドで並べ替える
  • 045 並べ替えを解除して,もとの並びで表示する
  • 046 複数のフィールドに並べ替えを設定する
  • 047 上位Nレコードを取得する
  • 048 N番目以降のレコードを取得する

第2章 使いやすいフォームをデザインする

1 フォームの操作

  • 049 フォームを開く
  • 050 開いたフォームに特定のレコードだけを表示する
  • 051 作業ウィンドウを固定してフォームを開く
  • 052 フォームを最大化して表示する
  • 053 表示位置を指定してフォームを開く
  • 054 フォームのサイズでフォームを開く
  • 055 場面に応じて標題を変更してフォームを開く
  • 056 ?2つのフォームを連動させる
  • 057 フォームを閉じる
  • 058 フォームを閉じるときに,関連するオブジェクトも同時に閉じる
  • 059 一定時間経過後に,フォームを自動的に閉じる
  • 060 jキーを使ってフォームを閉じる

2 フォーカスとカーソルの制御

  • 061 フォーカスの移動順を設定する
  • 062 入力された値をもとに,フォーカスの移動先を決定する
  • 063 フォーカスを取得したときに,文字列の最後にカーソルを表示する
  • 064 フォーカスを取得したときに,リストボックスの背景色を変更する
  • 065 フォーカスを取得したときに,オプショングループの背景色を変更する

3 入力を支援する

  • 066 テキストボックスに入力する文字数が多いときに,ズームウィンドウを表示する
  • 067 テキストボックスに数値以外を入力できないようにする
  • 068 テキストボックスにアルファベット以外を入力できないようにする
  • 069 アルファベットを大文字に変換して登録する
  • 070 入力した値に関連する情報を別のテキストボックスに表示する
  • 071 入力した日付をもとに,別のテキストボックスに月末日を表示する
  • 072 オートルックアップクエリで不正な値を入力したときにメッセージを表示する
  • 073 登録されている最大値に1を足した値をコントロールの初期値にする
  • 074 日付と連番を利用して作成した値をコントロールの初期値にする
  • 075 コンボボックスでlキーと キーを押したときに,自動的にドロップダウンする
  • 076 コンボボックスにキー入力した値が適切なときに,自動的にドロップダウンする
  • 077 コンボボックスのリストに存在しない値を入力したときに,独自のメッセージを表示する
  • 078 コンボボックスのリストに存在しない値を入力したときに,その値をリストに登録する(その1)
  • 079 コンボボックスのリストに存在しない値を入力したときに,その値をリストに登録する(その2)
  • 080 コンボボックスのリストに存在しない値を入力したときに,その値をリストに登録する(その3)
  • 081 リストボックスまたはコンボボックスのリストを動的に変更する

4 値を検証する

  • 082 テキストボックスに値が入力されているかどうかを確認する
  • 083 間違った値が入力されたときにメッセージを表示する
  • 084 再入力しやすいように,テキストボックス内の文字列を選択状態にする
  • 085 間違った値が入力されたときに,テキストボックスの内容を変更前の値に戻す
  • 086 入力された文字数を確認する
  • 087 先頭文字が適切な値かどうかを確認する
  • 088 値リストに含まれる値を入力したかどうかを確認する
  • 089 重複した値が入力されたときにメッセージを表示する
  • 090 パスワードが正しいかどうかを確認する
  • 091 数値データが入力されたかどうかを確認する
  • 092 日付として有効な値が入力されたかどうかを確認する
  • 093 数値または日付の範囲が正しいかどうかを確認する
  • 094 テキストボックスに必ず値が入力されるようにする
  • 095 レコードを保存するときに,無入力の項目がないか確認する
  • 096 入力規則に違反したときに独自のメッセージを表示する
  • 097 定型入力に違反したときに独自のメッセージを表示する

5 メイン/サブフォーム

  • 098 関連するレコードを同時に更新する
  • 099 関連するレコードを同時に削除する
  • 100 サブフォーム上のレコードを削除する
  • 101 サブフォームで値を更新したときに,メインフォームに表示している集計結果を即時に更新する
  • 102 レコードの複製を作成して同じテーブルに追加する

6 コントロールのデザイン

  • 103 ラベルをクリックしたときに,コマンドボタンに作成したプログラムを実行する
  • 104 コントロールの表示/非表示を制御する
  • 105 コントロールの使用可/不可を制御する
  • 106 日付をアップダウンするボタンを作成する
  • 107 コンボボックスまたはリストボックスに表示するリストを実行時に定義する
  • 108 コンボボックスのリストの先頭に「(すべて)」を追加する
  • 109 リストボックスで選択されている項目数を取得する
  • 110 リストボックスで選択されている項目を参照する
  • 111 リストボックスで選択されている項目を解除する
  • 112 2つのリストボックス間で項目を移動する
  • 113 ウィザードのようなフォームを作る
  • 114 サブフォームのソースオブジェクトを実行時に変更する
  • 115 登録された画像のパスを利用してイメージを表示する
  • 116 表示するイメージの大きさに合わせて,フォームの大きさを変更する

第3章 レポートを使いこなす

1 レポートを印刷する

  • 117 レポートのプレビュー画面を表示する
  • 118 特定のレポートだけを印刷する
  • 119 プレビュー画面を指定した大きさで表示する
  • 120 プレビューの倍率を指定する
  • 121 印刷時に[印刷]ダイアログボックスを表示する
  • 122 [キャンセル]ボタンをクリックしたときに印刷を中止する
  • 123 印刷時に[ページ設定]ダイアログボックスを表示する
  • 124 ?印刷するレコードがないときに,印刷を中止する
  • 125 サブレポートに出力するデータがないときに印刷を中止する
  • 126 親子関係のあるレポートで,サブレポートに出力するデータがないページを飛ばして印刷する

2 レポートのデザイン

  • 127 ページ番号の初期値を1以外の値にする
  • 128 日付を出力するかどうかを印刷時に指定できるようにする
  • 129 透かしを印刷する
  • 130 1レコードずつ背景色を変更して出力する
  • 131 特定の条件を満たすレコードの背景色を変更して出力する
  • 132 通常の罫線は点線で,5行ごとの罫線は実線で出力する
  • 133 5行おきに区切り線を出力する
  • 134 5行おきに空白行を出力する
  • 135 宛名ラベル印刷を行うときに,用紙の指定した位置から印刷する
  • 136 用紙の最後まで罫線を出力する
  • 137 レコードを縦方向に繰り返して印刷する
  • 138 値を出力する代わりに,対応する箇所を○印で囲んで出力する
  • 139 データベースに登録されたパスを使用して,イメージデータを出力する

3 その他

  • 140 使用できるプリンタの一覧を取得する
  • 141 使用するプリンタを設定する
  • 142 ラベルプリンタにカレントレコードを出力する
  • 143 特定の条件を満たすレコードをラベルプリンタに連続して出力する

第4章 アプリケーション構築のヒント

1 値の参照

  • 144 オブジェクトの値を参照する
  • 145 オブジェクトのプロパティを参照する
  • 146 リストボックスの値を参照する
  • 147 コンボボックスの値を参照する
  • 148 サブフォームを参照する
  • 149 フォーム上のセクションを参照する

2 フォームの操作

  • 150 コマンドボタンに作成したプログラムをファンクションキーで実行する
  • 151 コマンドボタンに作成したプログラムをキーの組み合わせで実行する
  • 152 キーに定義されている動作を停止する
  • 153 カレントコントロールの名前を取得する
  • 154 フォーム上のすべてのコントロールを参照する
  • 155 コントロールの種類を調べる
  • 156 フォーム上にメッセージを点滅させて表示する
  • 157 フォーム上にアニメーションを表示する

3 Accessオブジェクトの操作

  • 158 指定した大きさでオブジェクトを開く
  • 159 指定したオブジェクトをアクティブにする
  • 160 指定したオブジェクトを削除する
  • 161 カレントオブジェクトの名前と種類を調べる
  • 162 オブジェクトの状態を取得する
  • 163 オブジェクトの名前を変更する
  • 164 開いているフォームのビューを調べる
  • 165 フォームやレポートの一覧を取得する
  • 166 テーブルやクエリの一覧を取得する
  • 167 テーブルやクエリの詳細な一覧を取得する
  • 168 開いているオブジェクトの一覧を取得する
  • 169 開いているオブジェクトをすべて閉じる

4 データのインポート/エクスポート

  • 170 データベースのバックアップを作成する
  • 171 別のデータベースにテーブルのバックアップを作成する
  • 172 カレントデータベースにテーブルのコピーを作成する
  • 173 テーブルの内容をCSV形式のファイルにエクスポートする
  • 174 テーブルの内容をExcel形式のファイルにエクスポートする
  • 175 Accessオブジェクトの内容をHTML形式のファイルにエクスポートする
  • 176 AccessオブジェクトをXML形式のファイルにエクスポートする
  • 177 エクスポート時にファイル形式とファイル名を指定する
  • 178 Recordsetオブジェクトの内容をCSV形式のファイルに出力する
  • 179 CSV形式のファイルからデータをインポートする
  • 180 Excel形式のファイルからデータをインポートする
  • 181 XML形式のファイルからデータをインポートする

5 その他

  • 182 Accessのバージョンを調べる
  • 183 [ファイルを開く]ダイアログボックスを利用する
  • 184 [名前を付けて保存]ダイアログボックスを利用する
  • 185 Windows APIを使って[ファイルを開く]ダイアログボックスを表示する
  • 186 Windows APIを使って[名前を付けて保存]ダイアログボックスを表示する
  • 187 アプリケーションを保存したパスを取得する
  • 188 パスからフォルダ名またはファイル名を取得する
  • 189 警告音を鳴らす
  • 190 マクロ実行時に表示されるシステムメッセージを停止する
  • 191 [はい]や[いいえ]ボタンを含んだメッセージを表示する
  • 192 ユーザーが値を入力できるダイアログボックスを表示する
  • 193 日本語入力モードをオンにした状態でインプットボックスを開く
  • 194 プログラム実行中の画面の再描画を停止する
  • 195 処理に時間がかかるときに,フォーム上にメッセージを表示する
  • 196 処理に時間がかかるときに,マウスポインタの形状を変更する
  • 197 処理に時間がかかるときに,ステータスバーにインジケータを表示する
  • 198 プログラムにエラー処理を追加する
  • 199 発生したエラーの種類を確認する
  • 200 Accessのエラーメッセージを独自のメッセージに変更する
  • 201 データベースウィンドウを最小化する
  • 202 データベースを閉じる
  • 203 Accessを終了する

第5章 SQL・ADO・ADOXを利用する

1 SQLステートメントの書き方

  • 204 選択クエリを作成するSQLステートメント
  • 205 重複した値は1レコードとして取得する
  • 206 指定した条件を満たすレコードを取得する
  • 207 抽出する値をパラメータにする
  • 208 レコードを並べ替えた結果を取得する
  • 209 登録されているデータを使って集計する
  • 210 テーブル作成クエリを作成するSQLステートメント
  • 211 追加クエリを作成するSQLステートメント(単一レコード)
  • 212 追加クエリを作成するSQLステートメント(複数レコード)
  • 213 更新クエリを作成するSQLステートメント
  • 214 削除クエリを作成するSQLステートメント

2 SQLステートメントの実行

  • 215 選択クエリを実行する
  • 216 パラメータクエリを実行する
  • 217 集計用のクエリを実行する
  • 218 アクションクエリを実行する(確認メッセージあり)
  • 219 アクションクエリを実行する(確認メッセージなし)

3 ADO

  • 220 カレントデータベースに接続する
  • 221 他のAccessデータベースに接続する
  • 222 Access以外のデータベースに接続する
  • 223 テーブルからデータを取得する
  • 224 レコードの内容を参照する
  • 225 レコードセットに含まれるすべてのレコードを参照する
  • 226 レコードセットに含まれるレコード数を確認する
  • 227 既存のレコードを編集する
  • 228 新しいレコードを追加する
  • 229 既存のレコードを削除する
  • 230 レコードセットの先頭から検索を開始する
  • 231 続けて検索を実行する
  • 232 特定の条件を満たすレコードを抽出する
  • 233 フィルタを解除する
  • 234 指定したフィールドでレコードを並べ替える
  • 235 並べ替えを解除する
  • 236 Recordsetオブジェクトの状態を調べる

4 ADOX

  • 237 カレントデータベースに接続する
  • 238 新しいテーブルを作成する
  • 239 既存のテーブルに主キーを追加する
  • 240 選択クエリを作成する
  • 241 パラメータクエリを作成する
  • 242 既存のクエリを変更する

第6章 データを活用する

1 データの変換

  • 243 オートナンバー型フィールドの初期値を0にする
  • 244 オートナンバーの増分を指定する
  • 245 すでにデータが登録されている状態でオートナンバー型の値を初期化する
  • 246 大文字/小文字を統一する
  • 247 全角/半角を統一する
  • 248 ひらがな/カタカナを統一する
  • 249 半角カタカナに統一する
  • 250 文字列中に含まれる空白の全角と半角を統一する
  • 251 文字列の前後の空白を削除する
  • 252 文字列中に含まれる空白を削除する
  • 253 絶対値を取得する
  • 254 小数点を含んだ値を整数にする
  • 255 小数点以下の値を四捨五入する
  • 256 Yes/No型のチェックを反転する

2 データの加工

  • 257 文字列の先頭から指定した文字数を取得する
  • 258 文字列の右端から指定した文字数を取得する
  • 259 文字列の一部を取得する
  • 260 カンマまたは空白で区切られたデータを2つのフィールドに分ける
  • 261 2つのフィールドに分かれた文字列を1つのフィールドにまとめる
  • 262 日付の一部を取得する
  • 263 日付から和暦を取得する
  • 264 和暦の年から西暦を取得する
  • 265 文字列として登録した日付を日付/時刻型の値に変換する
  • 266 複数のフィールドに登録した月や日を利用して日付/時刻型の値を取得する
  • 267 登録されている日付と今日の日付を利用して時間間隔を調べる
  • 268 登録されている日付と今日の日付を利用して満年齢を取得する
  • 269 登録されている日付と今日の日付を利用して年齢を「○歳○ヶ月」という書式で取得する

第7章 プログラミングのテクニック

1 コードウィンドウの使い方

  • 270 ヒントを表示する
  • 271 複数行をまとめてコメントアウトする
  • 272 1つの命令を複数行に分けて記述する
  • 273 ブレークポイントを利用してデバッグする
  • 274 イミディエイトウィンドウに変数の値を出力する
  • 275 イミディエイトウィンドウでプログラムを実行する

2 Visual Basicの文法

  • 276 変数の宣言を強制する
  • 277 Accessの組み込みコマンドを実行する
  • 278 条件によって処理を分岐する
  • 279 変数の値を利用して処理を分岐する
  • 280 決まった回数,繰り返して処理を実行する
  • 281 コレクションに含まれるオブジェクトに対して,繰り返して処理を実行する
  • 282 特定の条件を満たしている間,繰り返して処理を実行する
  • 283 特定の条件を満たすまで,繰り返して処理を実行する
  • 284 Subプロシージャを作成する
  • 285 Functionプロシージャを作成する
  • 286 処理を途中で終了する

3 困ったことが起こったとき

  • 287 作成したはずのプログラムを実行できない
  • 288 システムメッセージが表示されない
  • 289 Accessの作業ウィンドウ内をクリックしても反応がない
  • 290 ループ処理から抜けられなくなった
  • 291 あるはずのデータが検索または抽出できない
  • 292 フィルタの実行結果がフォームに反映されない
  • 293 ワイルドカードが正しく動作しない
  • 294 SQLステートメントが正しく動作しない
  • 295 1ページおきに空のレポートが出力される
  • 296 オブジェクト名を変更したらイベントプロシージャが消えた
  • 297 コンパイルエラーが発生した
  • 298 実行時エラーが発生した
  • 299 「オブジェクト変数またはWithブロック変数が定義されていません」というエラーが発生した
  • 300 「Nullの使い方が不正です」というエラーが発生した