Accessで業務ソフト開発

Accessで既存システムの機能追加

HOME > Access VBA FQA

DoCmd - Access VBA

マクロ命令実行オブジェクトが、DoCmdオブジェクトです。
どのアクションを実行するかは、メソッドで指定します。

DoCmdのメソッドの一覧

DoCmd.ApplyFilter フォームに表示されるレコードにフィルタをかける

ApplyFilter メソッドは、Visual Basic で "ApplyFilter/フィルタの実行" アクションを実行します。
フォームの表示データを絞り込む時に使います

'絞り込むフィールド名・・・[氏名](データ型はテキスト型)
'絞り込む値・・・山田太郎
DoCmd.ApplyFilter "", "[氏名]='山田太郎'"

'絞り込むフィールド名・・・[金額](データ型は通貨型)
'絞り込む値・・・10,000円以上
DoCmd.ApplyFilter "", "[金額]>=10000"

DoCmd.Beep 警告音を鳴らす。

Visual Basic で "Beep/警告音" アクションを実行します。
エラーが発生した時ときなど、警告音を鳴らしたい場面で使用します。

'警告音を鳴らす
DoCmd.Beep

DoCmd.CancelEvent イベントをキャンセルします。

Visual Basic で "CancelEvent/イベントのキャンセル" アクションを実行します。
CancelEventメソッドは、イベントによって実行されたときにのみ有効です。

'イベントをキャンセルします
DoCmd.CancelEvent

DoCmd.Close オブジェクトを閉じる。

Visual Basic で "Close/閉じる" アクションを実行します。
VBAでフォーム、レポート、データシートなど開いているオブジェクトを閉じる。

'アクティブオブジェクト(自分自身)を閉じる
DoCmd.Close

'指定フォームを閉じる
'閉じるフォーム名・・・F_得意先
DoCmd.Close acForm, "F_得意先"

'指定レポートを閉じる
'閉じるレポート名・・・R_得意先一覧表
DoCmd.Close acReport, "R_得意先一覧表"

DoCmd.DeleteObject オブジェクトを削除する。

Visual Basic で "DeleteObject/オブジェクトの削除" アクションを実行します。
VBAで指定したオブジェクトを削除する。

'オブジェクトを削除します
DoCmd.Close

'テーブルを削除する
'削除するテーブル名・・・T_履歴
DoCmd.DeleteObject acTable, "T_履歴"

'クエリを削除する
'削除するクエリ名・・・Q_仮集計
DoCmd.DeleteObject acQuery, "Q_仮集計"

'フォームを削除する
'削除するフォーム名・・・F_伝票入力
DoCmd.DeleteObject acForm, "F_伝票入力"

'レポートを削除する
'削除するレポート名・・・R_仮集計一覧
DoCmd.DeleteObject acReport, "R_仮集計一覧"

DoCmd.SelectObject オブジェクトを選択する。

Visual Basic で "SelectObject/オブジェクトの選択" アクションを実行します。
VBAでフォーム、レポート、データシートなど開いているオブジェクトを選択する。

'開いているフォーム"F_得意先マスタ"をアクティブにします
'指定したフォームが開いていない場合はエラーになります。
DoCmd.SelectObject acForm, "F_得意先マスタ"

'レポート"R_得意先マスタ"をプレビュー表示してアクティブにします
DoCmd.OpenReport "R_得意先マスタ", acViewPreview
DoCmd.SelectObject acReport, "R_得意先マスタ"

DoCmd.Rename オブジェクトの名前を変更する。

Visual Basic で "Rename/名前の変更" アクションを実行します。

'テーブル"T_得意先マスタ"を"T_得意先マスタ_bak"という名前に変更します
DoCmd.Rename "T_得意先マスタ_bak", acTable, "T_得意先マスタ"

DoCmd.CopyObject オブジェクトをコピーする。

Visual Basic で "CopyObject/オブジェクトのコピー" アクションを実行します。

'既存のテーブル"T_得意先マスタ"を"T_得意先マスタ_bak"という名前でコピーします
DoCmd.CopyObject , "T_得意先マスタ_bak", acTable, "T_得意先マスタ"

DoCmd.Save オブジェクトを保存する。

Visual Basic で "Save/オブジェクトの保存" アクションを実行します。

'"T_得意先マスタ"を上書き保存します
DoCmd.Save acForm, "T_得意先マスタ"

DoCmd.DoMenuItem メニューの実行。

Access に対して適切なメニューまたはツールバー コマンドが表示されます。
「メニューの実行」というアクション自体は、Access2000以降は存在しません
旧システムとの互換用と思ってください。

DoCmd.DoMenuItem RunCommand
acFormBar, acEditMenu, 2 acCmdCopy
acFormBar, acEditMenu, 5 acCmdPasteAppend
acFormBar, acEditMenu, 6 acCmdDeleteRecord
acFormBar, acEditMenu, 8 acCmdSelectRecord
acFormBar, acEditMenu, 10 acCmdFind
acFormBar, acEditMenu, 12, 4 acCmdRecordsGoToNew
acFormBar, acEditMenu, acCopy acCmdCopy
acFormBar, acEditMenu, acPaste acCmdPaste
acFormBar, acEditMenu, acUndo acCmdUndo
acFormBar, acFile, acSaveForm acCmdSave
acFormBar, acRecordsMenu, 0, 2 acCmdAdvancedFilterSort
acFormBar, acRecordsMenu, 2 acCmdApplyFilterSort
acFormBar, acRecordsMenu, 5 acCmdRefresh
acFormBar, acRecordsMenu, acSaveRecord acCmdSaveRecord
acFormBar, 7, 6 acCmdSizeToFit
1, 3, 3 acCmdNewObjectReport
3, acEditMenu, acPaste acCmdPaste

DoCmd.Echo 画面の再描画を制御する。

Visual Basic で "Echo/エコー" アクションを実行します。。

'画面の再描画を止める
DoCmd.Echo False

'画面の再描画を行う
DoCmd.Echo True

DoCmd.FindRecord レコードの検索を行う。

Visual Basic で "FindRecord/レコードの検索" アクションを実行します。
VBAでフォーカスのあるコントロールを検索する。

'テキストボックス[氏名]の内容が"山田"で始まる最初のレコードを検索します
'検索の対象となるコントロールにフォーカスを移動
DoCmd.GoToControl "氏名"
'文字列の先頭と照合
DoCmd.FindRecord "山田", acStart

'テキストボックス[氏名]の内容が"山田"で始まる最初のレコードを検索します
'検索の対象となるコントロールにフォーカスを移動
DoCmd.GoToControl "氏名"
'文字列と部分一致条件で照合
DoCmd.FindRecord "田", acAnywhere

検索条件
acAnyWhere...部分一致
acEntire.....フィールド全体と一致(規定値)
acStart......フィールドの先頭と一致

DoCmd.FindNext 次のレコードを検索する。

Visual Basic で "FindNext/次を検索" アクションを実行します。
'「レコードの検索」で実行した条件に合う、次のレコードを検索します

'条件に合う、次のレコードを検索します
DoCmd.FindNext

DoCmd.GoToControl フォーカスを移動する。

Visual Basic で "GoToControl/コントロールの移動" アクションを実行します。
特定のコントロールにフォーカスを移動する

'コントロール名[氏名]にフォーカスを移動します
DoCmd.GoToControl "氏名"

Me!氏名.SetFocus'でも同じ動作をします

DoCmd.GoToPage ページ移動を行う。

Visual Basic で "GoToPage/ページの移動" アクションを実行します。
改ページコントロールで複数ページ分けられたフォームのページ移動を行います

'フォームの2ページ目に移動します
DoCmd.GoToPage 2

DoCmd.GoToRecord レコードの移動を行う。

Visual Basic で "GoToRecord/レコードの移動" アクションを実行します。
開いているテーブル、フォーム、クエリ、のカレントレコードを移動します。


'カレントフォームのレコードを1レコード次に進めます
DoCmd.GoToRecord , , acNext

'カレントフォームのレコードを10レコード次に進めます
DoCmd.GoToRecord , , acNext, 10


'フォーム"F_得意先マスタ"のレコードを1レコード次に進めます
DoCmd.GoToRecord acForm, "F_得意先マスタ, acNext

'フォーム"F_得意先マスタ"のレコードを10レコード次に進めます
DoCmd.GoToRecord acForm, "F_得意先マスタ, acNext, 10


'カレントフォームのレコードを1レコード前に戻します
DoCmd.GoToRecord , , acPrevious

'カレントフォームのレコードを10レコード前に戻します
DoCmd.GoToRecord , , acPrevious, 10

'フォーム"F_得意先マスタ"のレコードを1レコード前に戻します
DoCmd.GoToRecord acForm, "F_得意先マスタ, acPrevious

'フォーム"F_得意先マスタ"のレコードを10レコード前に戻します
DoCmd.GoToRecord acForm, "F_得意先マスタ, acPrevious, 10


'カレントフォームのレコードを先頭レコードに移動します
DoCmd.GoToRecord , , acFirst

'フォーム"F_得意先マスタ"のレコードを先頭レコードに移動します
DoCmd.GoToRecord acForm, "F_得意先マスタ, acFirst


'カレントフォームのレコードを最終レコードに移動します
DoCmd.GoToRecord , , acLast

'フォーム"F_得意先マスタ"のレコードを最終レコードに移動します
DoCmd.GoToRecord acForm, "F_得意先マスタ, acLast


'カレントフォームのレコードを新しいレコードに移動します
DoCmd.GoToRecord , , acNewRec

'フォーム"F_得意先マスタ"のレコードを新しいレコードに移動します
DoCmd.GoToRecord acForm, "F_得意先マスタ", acNewRec


'カレントフォームのレコードを先頭から15番目のレコードに移動します
DoCmd.GoToRecord , , acGoTo, 15

'フォーム"F_得意先マスタ"のレコードを先頭から15番目のレコードに移動します
DoCmd.GoToRecord acForm, "F_得意先マスタ", acGoTo, 15

DoCmd.Hourglass 砂時計ポインタ を表示する。

Visual Basic で "Hourglass/砂時計ポインタ" アクションを実行します。
マウスポインタを砂時計の形に変えるます。

'マウスポインタを砂時計にします
DoCmd.Hourglass True

'マウスポインタを元に戻します
DoCmd.Hourglass False

DoCmd.Maximize アクティブウィンドウを最大化する。

Visual Basic で "Maximize/最大化" アクションを実行します。
アクティブウィンドウを最大化する。

'アクティブなウィンドウを最大化します
DoCmd.Maximize

'[得意先マスタ]ウィンドウを最大化する
'※[得意先マスタ]が開いていること
DoCmd.SelectObject acForm, "F_得意先マスタ"
DoCmd.Maximize

DoCmd.Minimize アクティブウィンドウを最小化する。

Visual Basic で "Minimize/最小化" アクションを実行します。
アクティブウィンドウを最小化する。

'アクティブなウィンドウを最小化します
DoCmd.Minimize

'[得意先マスタ]ウィンドウを最小化する
'※[得意先マスタ]が開いていること
DoCmd.SelectObject acForm, "F_得意先マスタ"
DoCmd.Minimize

DoCmd.MoveSize ウィンドウサイズを変更する/ウィンドウの位置を移動する

Visual Basic で "MoveSize/サイズ変更" アクションを実行します。
ウィンドウサイズを変更する。ウィンドウの位置を移動する。
※単位は twip です。1cm は 567twip です。

'アクティブなウィンドウのサイズを、幅10cm、高さ5cm に変更します
DoCmd.MoveSize , , 5670, 2835

'アクティブなウィンドウを、横4cm、縦3cm の位置に移動します
DoCmd.MoveSize 2268, 1701

DoCmd.SelectObject オブジェクトを選択する。

Visual Basic で "SelectObject/オブジェクトの選択" アクションを実行します。
Accessの中に開いている各種ウィンドウを最前面に表示するには、DoCmd.SelectObjectを使います。

'"F_得意先マスタ"フォームをアクティブにします。
'※"F_得意先マスタ"フォームが開いていないとエラーとなります。
DoCmd.SelectObject acForm, "F_得意先マスタ"

'レポート"R_得意先マスタ"をプレビュー表示してアクティブにします。
DoCmd.OpenReport "R_得意先マスタ", acViewPreview
DoCmd.SelectObject acReport, "R_得意先マスタ"

DoCmd.OpenDataAccessPage データアクセスページを開く。

Visual Basic で "OpenDataAccessPage/データアクセスページを開く" アクションを実行します。

'データアクセスページを開く
DoCmd.OpenDataAccessPage "ページ名"

DoCmd.OpenForm フォームを開く。

Visual Basic で "OpenForm/フォームを開く" アクションを実行します。
【書式】[]は省略可 Viewを省略してFilterNameを設定するときはViewの[,]を省略できない。
DoCmd.OpenForm FormName [,View] [,FilterName] [,WhereCondition] [,DataMode] [,WindowMode] [,OpenArgs]
間違いやすいのが下記の
 FilterName・・・クエリの名前を文字列式で指定します。
 WhereCondition・・・SQL の WHERE 句を文字列式で指定します。 WHEREを指定する必要はありません。
です。
FilterNameにはフォームのレコードソースになるクエリやSQL文を指定します。
WhereConditionにはフィルタ条件を指定します。


'フォーム"F_得意先マスタ"をフォームビューで開きます
DoCmd.OpenForm "F_得意先マスタ"
または、DoCmd.OpenForm "F_得意先マスタ", acNormal

'フォーム"F_得意先マスタ"をデータシートビューで開きます
DoCmd.OpenForm "F_得意先マスタ", acFormDS

'フォーム"F_得意先マスタ"を印刷プレビューで開きます
DoCmd.OpenForm "F_得意先マスタ", acPreview

'フォーム"F_得意先マスタ"をデザインビューで開きます
DoCmd.OpenForm "F_得意先マスタ", acDesign
※VBAでフォーム自体を修正する場合などで使います

'フォーム"F_得意先マスタ"を追加専用フォームビューで開きます
DoCmd.OpenForm "F_得意先マスタ", , , , acAdd
※過去のレコードを間違って変更してしまうのを防げます

'フォーム"F_得意先マスタ"を読み取り専用フォームビューで開きます
DoCmd.OpenForm "F_得意先マスタ", , , , acReadOnly
※新規レコードの追加や変更を禁止できます

'フォーム"F_得意先マスタ"をアイコン(最小化した状態)で開きます
DoCmd.OpenForm "F_得意先マスタ", , , , , acIcon

'フォーム"F_得意先マスタ"をダイアログとして開きます
DoCmd.OpenForm "F_得意先マスタ", , , , , acDialog

'フォーム"F_得意先マスタ"非表示で開きます
DoCmd.OpenForm "F_得意先マスタ", , , , , acHidden

'クエリー"Q_得意先マスタ"をレコードソースとしてフォーム"F_得意先マスタ"を開きます
DoCmd.OpenForm "F_得意先マスタ", , "Q_得意先マスタ"

'住所が東京都の得意先だけをフォーム"F_得意先マスタ"に表示します
DoCmd.OpenForm "F_得意先マスタ", , , "[住所] Like '*東京都'"
※あいまいな条件抽出 - LIKE演算子

'"住所フリガナ"が"ア"~"オ"で始まる得意先だけをフォーム"F_得意先マスタ"に表示します
DoCmd.OpenForm "F_得意先マスタ", , , "[住所フリガナ] Like '[ア-オ]*'"

'"得意先CD"が100~110(数値型)の得意先だけをフォーム"F_得意先マスタ"に表示します
DoCmd.OpenForm "F_得意先マスタ", , , "[得意先CD] Between 100 And 110"

'フォーム"F_得意先マスタ"を、引数として"新規登録"を渡して開きます
DoCmd.OpenForm "F_得意先マスタ", , , , , , "新規登録"

DoCmd.OpenReport レポートを開く。

Visual Basic で "OpenReport/レポートを開く" アクションを実行します。
【書式】[]は省略可 Viewを省略してFilterNameを設定するときはViewの[,]を省略できない。
DoCmd.OpenReport FormName [,View] [,FilterName] [,WhereCondition] [,WindowMode] [,OpenArgs]
間違いやすいのが下記の
 FilterName・・・クエリの名前を文字列式で指定します。
 WhereCondition・・・SQL の WHERE 句を文字列式で指定します。 WHEREを指定する必要はありません。
です。
FilterNameにはレポートのレコードソースになるクエリやSQL文を指定します。
WhereConditionにはレポートのフィルタ条件を指定します。


'レポート"R_得意先マスタ"を印刷します
DoCmd.OpenReport  "R_得意先マスタ"
または、DoCmd.OpenReport "R_得意先マスタ", acViewNormal

'レポート"R_得意先マスタ"をプレビュー表示します
DoCmd.OpenReport "R_得意先マスタ", acPreview
'レポート"R_得意先マスタ"をデザインビューで開きます DoCmd.OpenReport "R_得意先マスタ", acViewDesign ※VBAでレポート自体を修正する場合などで使います 'クエリー"Q_得意先マスタ"をレコードソースとしてレポート"R_得意先マスタ"を印刷します DoCmd.OpenReport "R_得意先マスタ", , "Q_得意先マスタ" '住所が東京都の得意先だけを、レポート"R_得意先マスタ"に印刷します DoCmd.OpenReport "R_得意先マスタ", , , "[住所] Like '*東京都'" ※あいまいな条件抽出 - LIKE演算子 '"住所フリガナ"が"ア"~"オ"で始まる得意先だけを、レポート"R_得意先マスタ"に印刷します DoCmd.OpenReport "R_得意先マスタ", , , "[住所フリガナ] Like '[ア-オ]*'" '"得意先CD"が100~110(数値型)の得意先だけをレポート"R_得意先マスタ"に印刷します DoCmd.OpenReport "R_得意先マスタ", , , "[得意先CD] Between 100 And 110" 'レポート"R_得意先マスタ"に、引数として"お得意様"を渡して印刷します DoCmd.OpenReport "R_得意先マスタ", , , , "お得意様"

DoCmd.OpenQuery クエリを開く。

Visual Basic で "OpenQuery/クエリを開く" アクションを実行します。
選択クエリやクロス集計クエリを、データシート ビュー、デザイン ビュー、印刷プレビューのいずれかで開きます。アクションクエリも実行できます。

'選択クエリー"Q_得意先マスタ"を編集・追加・削除が可能な状態で開きます
DoCmd.OpenQuery "Q_得意先マスタ"
または、DoCmd.OpenQuery "Q_得意先マスタ", , acEdit

'選択クエリー"Q_得意先マスタ"を追加専用で開きます
DoCmd.OpenQuery "Q_得意先マスタ", , acAdd

'選択クエリー"Q_得意先マスタ"を読み取り専用で開きます
DoCmd.OpenQuery "Q_得意先マスタ", , acReadOnly

'選択クエリー"Q_得意先マスタ"をデザインビューで開きます
DoCmd.OpenQuery "Q_得意先マスタ", , acViewDesign

'選択クエリー"Q_得意先マスタ"を印刷プレビューで開きます
DoCmd.OpenQuery "Q_得意先マスタ", , acViewPreview

結果セットを開かないタイプのアクションクエリも実行できます

'追加クエリー"Q_得意先マスタ_追加"を実行します
DoCmd.OpenQuery "Q_得意先マスタ_追加"

'削除クエリー"Q_得意先マスタ_削除"を実行します
DoCmd.OpenQuery "Q_得意先マスタ_削除"

'テーブル作成クエリー"Q_得意先マスタ_work作成"を実行します
DoCmd.OpenQuery "Q_得意先マスタ_work作成"

'更新クエリー"Q_得意先マスタ_更新"を実行します
DoCmd.OpenQuery "Q_得意先マスタ_更新"

DoCmd.SetWarnings メッセージの表示設定

Visual Basic で "SetWarnings/メッセージの設定" アクションを実行します

'アクションクエリー実行時などのシステムメッセージを表示しない
DoCmd.SetWarnings False

'アクションクエリー実行時などのシステムメッセージを表示する
DoCmd.SetWarnings True

DoCmd.RunSQL SQL の実行

Visual Basic で "RunSQL/SQL の実行" アクションを実行します
SQL ステートメントでアクションクエリを実行します。 このクエリをトランザクションに含めるには、True を使います。 トランザクションを使わない場合は、False を使います。 既定値はTrueです。

'トランザクション使用
'テーブル"T_得意先マスタ"の全レコードをSQLで削除します
DoCmd.RunSQL "DELETE * FROM T_得意先マスタ"
または、DoCmd.RunSQL "DELETE * FROM T_得意先マスタ", True

'トランザクション不使用
'テーブル"T_得意先マスタ"の全レコードをSQLで削除します
DoCmd.RunSQL "DELETE * FROM T_得意先マスタ", False

DoCmd.Quit Access を終了します

Microsoft Access を終了します。
引数 Options の指定によって、終了の前にデータベース オブジェクトを保存することができます。

'Access を終了します
DoCmd.Quit

Application.Quit も同じ動作をします

DoCmd.CancelEvent イベントをキャンセルします

イベントによって実行されたときにのみ有効です
Visual Basic でキャンセルできるすべてのイベントには、引数 Cancel が指定されています。
CancelEventの代わりに、この引数にTrueを代入してもイベントをキャンセルできます。

'イベントをキャンセル
DoCmd.CancelEvent

DoCmd.ShowAllRecords すべてのレコードを表示します

Visual Basic で "ShowAllRecords/全レコードの表示" アクションを実行します。
・フォームのフィルタを解除します
・フォームやサブフォームのレコードの再クエリが行われます
・レコードの変更が反映されます
・追加したレコードが反映されます

'"ApplyFilter"メソッドでの抽出を解除して、すべてのレコードを表示します
DoCmd.ShowAllRecords

DoCmd.Requery フォームを再クエリーします

Visual Basic で "Requery/再クエリ" アクションを実行します。
・オブジェクト自体のソースを再クエリします。
・指定したコントロールのソースを再クエリし、そのコントロールのデータを更新します。

'カレントフォームのレコードソースを再クエリーします
DoCmd.Requery
※通常はMe.Requery

'コンボボックス"コンボ得意先名"を再クエリーします
DoCmd.Requery "コンボ得意先名"
※通常はMe.コンボ得意先名.Requery

PageTop

Accessでソフト開発のお問い合わせはこちら

会社概要

ソフトセル 担当:本田

住所:〒400-0806
山梨県甲府市善光寺3-32-15

電話:055-268-2140




HOME - Access FQA - AccessVBA FQA - 会社概要 - お問い合わせ - プライバシーポリシー - 特定商取引法 - サイトマップ