その他

Excelマクロを使ったRPA

Excelのマクロを使ってRPAをする方法

本記事ではExcelのマクロを使ってRPAを行うためのコードを紹介していきます。

目次
  1. 使用する関数の宣言
  2. カーソル位置を取得する
  3. カーソルの移動
  4. マウスのクリック操作
  5. キーボード操作

❶使用する関数の宣言

Windows APIを使ってRPAを行っていきます。

Windows APIとはWindowsOSの各機能(ウィンドウ、ファイル、ネットワーク接続、デバイスなど)へのアクセスや連携をさせているインターフェースです。

まずは、Windows APIをコントロールするための関数を「Option Explicit」で宣言していきます。この時、WindowsOSが64bitか32bitかでコードが違います。

GetCursorPos関数

GetCursorPos関数はカーソルの位置を確認するのに使用する関数になります

この関数はX座標、Y座標が入る独自のデータ型を作る必要があります。
下記コードで変数「x」及び「y」を格納できるcoordinate型という独自のデータ型を作成できます。

SetCursorPos関数

SetCursorPos関数はカーソルを指定した位置に移動させるのに使用する関数になります。

mouse_event関数

mouse_event関数はマウスのクリック操作を行うのに使用する関数になります。

宣言部分のコードまとめ

各bitごとに宣言部分のコードを下記にまとめました。
自身のPCのOSを確認して、適したコードをコピペして使ってみてください。

➋カーソル位置を取得する

カーソル位置の取得はGetCursorPos関数を使います。

下記コードでカーソルの位置を取得することができます。
マクロのオプションでショートカットキーを設定しておくと便利です。

❸カーソルの移動

カーソル位置の移動はSetCursorPos関数を使います。

使い方は非常に簡単で下記のように「SetCursorPos」の後ろにカーソルの移動先の座標を「x」、「y」の順番で入れればOKです。

SetCursorPos  x座標, y座標

カール移動は人間が行うよりも高速で実行されるためApplicationオブジェクトのWaitメソッドを使って要所的に処理待ちさせるとよいでしょう。

移動先の座標を調べる方法は先ほど紹介したGetCursorPos関数を使いましょう。

下記のコード例を実行するとディスプレイの4隅にカーソルを1秒間隔で順に移動させていくことができます。SetCursorPos関数の引数を変えることにより任意の箇所にカーソルを移動できます。

❹マウスのクリック操作

マウスのクリック操作はmouse_event関数を使います。

「mouse_event」の後ろ操作内容となる引数を入れることでマウスのクリック操作を行えます。

mouse_event 引数

操作内容 引数
左ボタンが押された 2
左ボタンが離された 4
右ボタンが押された 8
右ボタンが離された 10
中央ボタンが押された 20
中央ボタンが離された 40

下記コードは指定した座標で左クリックをし、SendKeysメソッドを使って文字を打ち込むコードです。クリックする座標をブラウザーの検索窓にすれば任意の言葉「今回はvba」を自動で検索できます。

❺キーボード操作

先の項目で使用したSendKeysメソッドは文字だけではなく「Enter」や「Ctrl」といった動作を表すキーも指定することができます。

動作を表すキーは下記の通りです。

キー コード
BackSpace {BACKSPACE}、{BS}、または {BKSP}
Break {BREAK}
CapsLock {CAPSLOCK}
Del または Delete {DELETE} または {DEL}
{UP}
{DOWN}
{LEFT}
{RIGHT}
終了 {END}
Enter {ENTER} または ~
Esc {ESC}
HELP {HELP}
ホーム {HOME}
Ins または Insert {INSERT} または {INS}
NumLock {NUMLOCK}
PageDown {PGDN}
PageUp {PGUP}
PrintScreen {PRTSC}
ScrollLock {SCROLLLOCK}
Tab {TAB}
Shift +
Ctrl ^
Alt %
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
F13 {F13}
F14 {F14}
F15 {F15}
F16 {F16}