#6 コマンドの実行(その3)

ここで使われるメソッド/アクション
  • RunCommand/コマンドの実行

フォームのウィンドウを移動する

DoCmd.RunCommand acCmdDocMove

※フォームなどのコントロールボックスから[移動]を選択したときの動作をします。移動位置を指定するパラメータはなく、実際の移動はキーボードの矢印キーで行います。

Accessのウィンドウを移動する

DoCmd.RunCommand acCmdAppMove

※Accessのコントロールボックスから[移動]を選択したときの動作をします。移動位置を指定するパラメータはなく、実際の移動はキーボードの矢印キーで行います。

アクティブウィンドウを印刷する

DoCmd.RunCommand acCmdPrint

※[ファイル]メニューの[印刷]に対応したコマンドで、すぐにプリンタ出力するのではなく、印刷範囲や印刷部数などを設定するダイアログを表示します。

アクティブウィンドウをプレビューする

DoCmd.RunCommand acCmdPrintPreview

※[ファイル]メニューの[印刷プレビュー]に対応したコマンドです。

起動時の設定ダイアログを表示する

DoCmd.RunCommand acCmdStartupProperties

※メニューの[ツール]-[起動時の設定]で表示されるダイアログを表示します。ダイアログを表示するだけで、各値をパラメータで指定できるものではありません。

形式を選択して貼り付けを行う

'貼り付け対象となるテキストボックスにフォーカスを移動します
Forms!frm社員マスタ!備考.SetFocus
'「形式を選択して貼り付け」のダイアログを表示します
DoCmd.RunCommand acCmdPasteSpecial

※貼り付けの動作までは行いません。ダイアログを表示したあとは、ユーザーが貼り付ける形式を指定して[OK]ボタンをクリックします。もし[キャンセル]ボタンがクリックされたときはエラーが発生しますので、何らかのエラー処理を行う必要があります。

検索を実行する

'検索対象のフィールドにフォーカスを移動します
Forms!frm社員マスタ!氏名.SetFocus
'検索ダイアログを表示します
DoCmd.RunCommand acCmdFind

※[編集]-[検索]メニューを実行するのと同じです。ダイアログを表示したあとは、ユーザーが各検索条件を指定し、実行します。


'検索ダイアログで指定された条件に一致する次のレコードを検索します
DoCmd.RunCommand acCmdFindNext

※一度、検索ダイアログで条件を指定すれば、このコマンドを実行することによって直ちに次のレコードが検索されます。

IEを起動し"検索ページ"を開きます

DoCmd.RunCommand acCmdOpenSearchPage

※IEを起動し、IEの[検索]ボタンを押したのと同じ動作を行います。

編集を元に戻す

DoCmd.RunCommand acCmdUndo

※レコード編集中に[Esc]キーを押したのと同じ動作を行います。アンドゥバッファが空のときに実行するとエラーになります。

フォームのウィンドウサイズを元のサイズに戻す

'アクティブウィンドウを元のサイズに戻します
DoCmd.RunCommand acCmdDocRestore

Accessのウィンドウサイズを元のサイズに戻す

DoCmd.RunCommand acCmdAppRestore

レコードを更新する

'編集中のレコードを更新(保存)します
DoCmd.RunCommand acCmdRefresh

※レコードに編集を加えた状態で、レコードセレクタをクリックしたのと同じ動作を行います。Accessではレコード移動などによってレコードは自動的に保存されますが、あえて[更新]ボタンを設けるような場合に使えるでしょう。

データシートの行の高さを変更する

'対象となるデータシートにフォーカスを移動します
Me!frm社員マスタ_sub.SetFocus
DoCmd.RunCommand acCmdRowHeight

※このコードは、メインフォーム上のボタンのクリックによって、データシート形式のサブフォーム「frm社員マスタ_sub」の行の高さを変更することを例としています。
※このメソッドでは、行の高さを指定するダイアログを表示するだけで、実際の寸法をパラメータとして指定することはできません。

レコードを並べ替える

'並べ替えの対象とするフィールドにフォーカスを移動します
Forms!frm社員マスタ!氏名.SetFocus

'昇順並べ替えを実行します
DoCmd.RunCommand acCmdSortAscending

'降順並べ替えを実行します
DoCmd.RunCommand acCmdSortDescending

ウィンドウを左右に並べて表示する

'開いているウィンドウを"左右に並べて表示"します
DoCmd.RunCommand acCmdTileVertically

ウィンドウを上下に並べて表示する

'開いているウィンドウを"上下に並べて表示"します
DoCmd.RunCommand acCmdTileHorizontally

レコードを移動する

'先頭のレコードへ移動します
DoCmd.RunCommand acCmdRecordsGoToFirst
'前のレコードへ移動します
DoCmd.RunCommand acCmdRecordsGoToPrevious
'次のレコードへ移動します
DoCmd.RunCommand acCmdRecordsGoToNext
'最後のレコードへ移動します
DoCmd.RunCommand acCmdRecordsGoToLast
'新しいレコードへ移動します
DoCmd.RunCommand acCmdRecordsGoToNew

※カレントレコードが先頭にある状態で前のレコードに移動しようとしたり、最後(新規)にある状態で次のレコードに移動しようとしたりすると、エラーとなります。

フォームのウィンドウを最小化(アイコン化)する

DoCmd.RunCommand acCmdDocMinimize

Accessのウィンドウを最小化(アイコン化)する

DoCmd.RunCommand acCmdAppMinimize

フォームのウィンドウを最大化する

DoCmd.RunCommand acCmdDocMaximize

Accessのウィンドウを最大化する

DoCmd.RunCommand acCmdAppMaximize

入力データを削除する

'削除するテキストボックスにフォーカスを移動します
Forms!frm社員マスタ!氏名.SetFocus
'削除を実行します
DoCmd.RunCommand acCmdDelete

※ここでいう削除とは、[Delete]キーを押すのと同じです。

オブジェクトを上書き保存する

'対象オブジェクトを選択します
DoCmd.SelectObject acReport, "pt社員マスタ"
'上書き保存します
DoCmd.RunCommand acCmdSave

※オブジェクトの保存は、デザイン時以外にも必要となることがあります。例えば、レポートのページ設定を変更した場合です。この場合、レポートオブジェクトを保存することによって、以降もそのページ設定が有効となります。

切り取り([編集]-[切り取り])を実行する

'切り取る文字列を選択します
Forms!frm社員マスタ!氏名.SetFocus
'「氏名」テキストボックスの内容をコピーします
DoCmd.RunCommand acCmdCut

※テキストボックスが空のときなど、切り取る文字列がないときはエラーになります。

'レコード全体を選択します
DoCmd.RunCommand acCmdSelectRecord
'レコード全体を切り取ります
DoCmd.RunCommand acCmdCut

※これを実行すると、削除を確認するメッセージが表示されます

選択フィルタを実行する

'選択フィルタの対象とするフィールドを選択します
Forms!frm社員マスタ!都道府県.SetFocus
'選択フィルタを実行します
DoCmd.RunCommand acCmdFilterBySelection

データをメールに添付して送信します

'アクティブウィンドウのデータをメール送信します
DoCmd.RunCommand acCmdSend

※画面に表示されているテーブルやフォーム、レポートなどのデータをファイルとして出力し、メールに添付します。所定のメーラーの送信メールが新規作成され、ここで出力されたファイルが添付ファイルとして指定されます。
※このコマンドは、Accessの[ファイル]-[送信]-[メールの宛先(添付ファイル)]メニューに対応したものです。このコマンドを実行すると、出力ファイル形式を選択するダイアログが表示されますので、あとはマニュアルで送信操作を行います。

置換を実行する

'置換対象のフィールドにフォーカスを移動します
Forms!frm社員マスタ!氏名.SetFocus
'置換ダイアログを表示します
DoCmd.RunCommand acCmdReplace

※[編集]-[置換]メニューを実行するのと同じです。ダイアログを表示したあとは、ユーザーが各置換条件を指定し、実行します。

レコードを追加貼り付けする

DoCmd.RunCommand acCmdPasteAppend

※マニュアル操作と同様、あらかじめレコードをコピーあるいは切り取りしておく必要があります。クリップボードが空の状態で実行するとエラーになります。

貼り付け([編集]-[貼り付け])を実行する

'貼り付け先のテキストボックスにフォーカスを移動します
Forms!frm社員マスタ!氏名.SetFocus
'クリップボードのデータを貼り付けます
DoCmd.RunCommand acCmdPaste

※マニュアル操作と同様、あらかじめ文字列をコピーあるいは切り取りしておく必要があります。クリップボードが空の状態で実行するとエラーになります。

アクティブウィンドウを閉じる

DoCmd.RunCommand acCmdClose

※特定のウィンドウを閉じたい場合は、DoCmdオブジェクトのSelectObjectメソッドなどを使って、そのウィンドウをアクティブにしておかなければなりません。その点、DoCmdオブジェクトのCloseメソッドは、引数としてオブジェクト名を指定できるので、コードとしてはそちらの方が簡単です。



【RunCommandを使う際の注意点】
「RunCommand」は、AccessのメニューバーやツールバーのコマンドをVBAから実行できるようにしたものです。メニューバーやツールバーでは、もしそのコマンドが使えない状態のときには、灰色表示になっているのはご存知でしょう。例えば、クリップボードが空の状態のときは、「貼り付け」は実行できないため、そのメニューやツールバーのボタンは灰色表示になっています。

ところが、「RunCommand」の場合は、その事前判断ができないため、実行不可の状態で実行するとエラーが発生します。もちろん、クリップボードが空かどうかチェックするなどの回避策はとれますが、かなり面倒なコーディングが必要となります。一番簡単なエラー回避策は、「On Error Resume Next」で逃げるか、エラートラップして回避するという方法がよいでしょう。

一方、あるオブジェクトにフォーカスがないと実行不可のものや、自動的にアクティブウィンドウに対して作用するコマンドも存在します。それらについては、メニューやツールバーからマニュアルで実行する際に、どのような条件が整っているときに実行可能か確認し、VBAのコード上でもその条件に見合うようにしてから、各コマンドを実行するようにしてください。例えば、「コピー」を行いたい場合、もしコマンドボタンにフォーカスがあれば、メニューの[編集]-[コピー]は使えない状態になっていますので、事前にテキストボックスにフォーカスを移動しておかなければなりません。あるいは、特定のフォームを最大化したい場合、まずそのフォームをアクティブにしておかなければなりません。
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved