【Excel VBA】SendKeys ステートメント
SendKeys ステートメントは、キーボードのいづれかのキーが押されたように振舞わせる処理を行います。
【構文】
SendKeys ①キー指定,②ウェイト
1.引数(パラメータ)の解説
No |
引数
|
省略 |
解説
|
---|---|---|---|
1 | キー指定 | × | いづれかのキーを指定します。 |
2 | ウェイト | 〇 |
True を指定するとSendKeys ステートメントでの処理が完了後に制御が戻ります。Falseを指定または、省略の場合は処理が済むのを待たずに実行が可能になります。(Falseでエラーが起こる場合は、True にすると処理がうまくいくかも) |
2.キー指定と解説
キー
|
解説
|
---|---|
SHIFT | + |
CTRL | ^ |
ALT | % |
Enter | {ENTER} |
BackSpace | {BS} |
CapsLock | {CAPSLOCK} |
半角/全角 | {kanji} |
Delete | {DEL} |
Tab | {TAB} |
PrintScreen | {PRTSC} |
↑ | {UP} |
← | ^ |
NumLock | {NUMLOCK} |
PageUp | {PGUP} |
PageDown | {PGDN} |
F1 ~ F15 | {F1} ~ {F15} |
代表的なキー指定を紹介します。ほかのキー指定もありますが種類が多いので割愛します。
3.コードの例
使用頻度が多い例として紹介します。これらを参考にすれば大方のケースに対応できるかと思います。
【Excel VBA】ブックの起動時にIMEを自動的に起動させる
Excelブックを開いた時に日本語入力ソフト(IME)を自動的に起動させるコードを紹介します。
通常は、Excelを起動させるとIMEがOFFの状態なので 半角/全角キーを押さなければ文字入力は半角の状態になっています。
このコードは、Excelの起動時にIMEをONの状態にしてスムーズに全角入力を行えるようにするためのものです。
「開発」のタブを開き、「VBエディター」に入ります。
上記の画像で説明があるようにコードは「ThisWorkbook」の中に記述します。
上記のコードが「ThisWorkbook」の中に記述するコードになります。
Private Sub Workbook_Open() というコードは、Excelブックを起動時に自動実行させるコードに対して最初に記述されます。
意味としては、「これから記述されるコードは、このExcelブックが開かれた時に自動実行されます」と理解するとよいと思います。
標準モジュールのコードは、マクロをこちらから実行させる必要があり、自動実行させることはできません。
ブックが開かれた時に自動実行させるには、「イベント処理」という形にする必要があります。
「イベント処理」とは、ある動作に対してOS がExcel に実行させる処理であり、その場合のコードと記述する場所は、決められています。
そのために今回の場合は「ThisWorkbook」の中にコードを記述することになります。
SendKeys ステートメントは、キーボードのいづれかのキーを自動的に押されたことにする場合に使われます。
SendKeys "%{kanji}" と記述すると半角/全角キーが押されたことになり、IMEがONの状態になります。
【ファイルを保存】オートシェイプを画像ファイルで出力する
Excelシート上で描画したオートシェイプを画像ファイルとして出力するコードを紹介します。
報告書とかマニュアルなどの作成でイラスト画像を使う機会は多いと思います。
イラストレータなどで作成したりしなくてもExcelには、オートシェイプという便利な機能があります。
イラストレータとかを起動させると Windows の処理が重くなりますし、むしろシンプルなイラスト画像や略図なら使い慣れている方の多いオートシェイプで作ったほうが効率的ともいえます。
ただオートシェイプは直接画像で出力はできないので画像として出力するには、ひと工夫する必要があります。
今回は、それをExcelマクロで自動で行うコードを構築してみました。
上記のコードは、Excel上でWebページとして保存する処理を利用しています。
Webページとしての保存を行うとファイル名.files という名前のフォルダーが作成されてフォルダー内にワークシート上のオートシェイプが PNG 画像として保存されます。
このコードは、その一連の処理を「マクロの記録」で作成し、それにオートシェイプのグループ化、保存のダイアログ表示などを追加したものです。
それとこのコードは、注釈にもあるようにアクティブシート内についてセル範囲(A1~Z50)にあるオートシェイプしか処理できません。
オートシェイプのある範囲を所得するコードを追加すると記述が長くなるので今回は、省略しました。
それと画像ファイルのみを出力させようとするなら作成されたフォルダーから対象の画像をフォルダー外に移動させてその後にフォルダーを削除する処理が必要です。
今回は、シンプルな例としてさきほどのコードを紹介しました。
次回は、画像ファイルのみを出力し、なおかつコードの記述をコンパクトにして紹介をしたいと思います。
【Excel VBA】Application.GetOpenFilename メソッド
ファイルの開くためのダイヤログボックスを表示するには、ApplicationオブジェクトのGetOpenFilenameメソッドを使います。
【構文】
Application.GetOpenFilename=(FileFilter, FilterIndex, Title, ButtonText, MultiSelect)
パラメータ | 省略 | データ型 | 内容 |
---|---|---|---|
FileFilter | 〇 | Variant | ファイル形式を文字列で指定します。 |
FilterIndex | 〇 | Variant | FileFilterで指定したファイル形式のペアに対して何番目を既定として表示するのかを指定します。 |
Title | 〇 | Variant | ファイルの選択するウィンドウのタイトルを指定します。 |
ButtonText | 〇 | Variant | Macintoshのみ指定できます。 |
MultiSelect | 〇 | Variant | 複数ファイルの選択が可能であるかをTrueかFalseをで指定します。 |
【例】
上記の例は、Excelのワークブックとマクロブックのいずれかを指定するコードです。
パラメータ(FileFilter)の部分は””で囲むようにして記述し、"Microsoft Excelワークブック,*.xlsx”のように表示する文字列とワイルドカードを含んだファイル形式を1ペアとします。
その後のパラメータ(FilterIndex)は、パラメータ(FileFilter)で指定したペアの内、何番目を既定とするかそ指定します。
上記のコードでは、1を指定しているので最初のペアである"Microsoft Excelワークブック,*.xlsx”が既定となります。
【ファイルを開く】ファイルのアイコンを非表示または、最小表示で開く
Excelマクロを処理する上で他のExcelファイルを開くなどファイルを開いて表示させる機会は多いと思います。
ファイルを開くときにタスクバーに表示されるファイルのアイコンを非表示か最小表示で開くと処理の時間は、少なくてすみ処理時間の短縮になります。
ファイルのアイコンを最小表示で開く
ファイルを開くウィンドウで選択したファイルを最小表示にすることができます。
filName = Application.GetOpenFilename
によって選択したファイル名を 変数 filName に代入させます。
次に Workbooks.Open メソッドに 変数 filName を割り当ててファイルを開きます。
最後に ActiveWindow.WindowStat プロパティ に xlmaximized を指定することでファイルのウィンドウ表示について最小化を行います。
以上が一連の処理となります。
ファイルのアイコンを非表示で開く
こちらは、ファイルを開くウィンドウで選択したファイルを非表示にすることができます。
ActiveWindow.WindowStat プロパティ に False を指定することでファイルのウィンドウ表示を非表示にしています。
【メッセージ】メッセージボックスを表示する
Excelマクロにおいて色々なタイプのメッセージボックスの表示方法があります。
msgBox 変数における定数どうしの組み合わせで多種多様のパターンが作り出せるのですが今回は、その中でも代表的なものを紹介します。
最初に最もシンプルなメッセージボックスのパターンを紹介します。
msgBox 変数に直接、表示する文字列を組み込んだものです。
次にメッセージボックスにタイトル文と改行した文章を表示するパターンです。
文字列の間に 「& vbCrLf &」を入れることで改行することができます。
タイトル文は、msgBox 変数における定数の中で最後尾で指定します。
メッセージボックスに変数を組み込んだものです。
割と使う機会は、多いと思います。
メッセージボックスは、改行ありとなしの2パターンが表示されます。
「はい」と「いいえ」のようにメッセージボックスの中で選択ができるようにしたパターンです。
これも使う機会は多そうです。
最後に紹介するのは、メッセージボックスにメッセージのタイプに応じたアイコンを表示するパターンです。
vbExclamation を指定すると出る注意メッセージのパターンは、表示されるときにWindowsで設定されているサウンドを鳴らします。
用途によって使い分けるとよいと思います。