ExcelVBAではじめるバイナリーオプション自動取引

4. 自動取引ツールを作ろう

f.購入画面を操作する1


f. 購入画面の操作1

FLASHへの対応

 さて、購入画面上のタグで検索することができない要素(FLASH)をVBAを使ってどのようにしてクリックするかですが、webページを操作する際に必ずタグを.Clickしなければならないという決まりはありません。

 人間が操作する場合、マウスカーソルをボタン上へ移動させて普通にマウスのボタンをクリックしています。

 見つからない要素を探すのではなく、人間の動作と同じことをVBAで実現するだけでよいのです。

マウスカーソルを操作する

 それではVBAでマウスカーソルを操作するプログラムを見てみましょう。

 最低限必要なことは、カーソルを移動させること、クリックすることですが、移動させるためには移動させる位置を知る必要があるので、まずは自分のディスプレイ上でカーソルを移動させるべき位置を把握します。

カーソル位置を取得する

 外為オプションの購入画面で購入操作を行うために、ブラウザをフルスクリーン表示したときの「(最新の)受付中タブ」、「円高」、「円安」、「購入」、「CLOSE」の位置を取得しておきます。

 「CLOSE」は画面上ですぐに確認することができませんが、「購入」をクリックしたときに完売だったり受付時間が終了していたりしたときに表示されるメッセージボックスを閉じるボタンです。

 以下を参考にして、作業を行うディスプレイ上で必要なカーソル位置を取得してセルに表示してみましょう。

カーソル位置取得手順
  1. 外為オプションの購入画面を表示してフルスクリーン画面に切り替え(F11)、ブラウザのスクロールバーを一番上に持っていく
  2. そのままVBEを表示する(Alt+Tabで選択)
  3. 以下のコードを入力する
    Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Type POINTAPI 'カーソル位置取得用の構造体 getx As Long '横座標 gety As Long '縦座標 End Type Sub GetCursorTest() 'カーソル位置取得テスト Dim CursorPos As POINTAPI 'カーソル現在位置 Dim ButtonName() As Variant 'ボタンの名称 ButtonName = Array("受付中", "円高", "円安", "購入", "CLOSE") Sheet1.Cells(1, 1) = "名称" Sheet1.Cells(1, 2) = "横座標" Sheet1.Cells(1, 3) = "縦座標" Dim i As Integer For i = 0 To UBound(ButtonName) GetCursorPos CursorPos 'カーソル位置取得 Sheet1.Cells(2 + i, 1) = ButtonName(i) Sheet1.Cells(2 + i, 2) = CursorPos.getx Sheet1.Cells(2 + i, 3) = CursorPos.gety Stop '一時停止 Next End Sub

  4. VBEの画面サイズを左の方に調整して購入画面のクリック位置が見えるようにする
  5. カーソルを「(最新の)受付中タブ」へ移動させてGetCursorTestを実行(F5
  6. カーソルを「円高」へ移動させてコードを実行(F5
  7. カーソルを「円安」へ移動させてコードを実行(F5
  8. カーソルを「購入」へ移動させてコードを実行(F5
  9. 購入受付中の画面へ移動し、購入金額ボックスに1を入力し(100円)、円高をクリックし、確認省略にチェックを入れて「購入」をクリック
  10. 「最低購入金額(1,000円)以上を入力してください。」というメッセージと「CLOSE」ボタンが表示されるので、再度VBEを表示し、カーソルを「CLOSE」へ移動させてからコードを実行(F5
  11. もう一回F5を押してプログラムを終了させ、フルスクリーン画面を終了する(F11
  12. Sheet1に座標が出力されたことを確認する

 ※位置を取得するときのコツはVBEの画面を小さくして購入画面のクリック位置に重ならないようにすることです。1つの座標を出力した後STOPで一時停止しますので、ブラウザを選択しないようにマウスカーソルだけを移動し、F5キーで続行するようにしてください。

 また、VBAから「IE.FullScreen = True」でフルスクリーン表示にした場合、F11ではもとに戻せない(IE.FullScreenをFalseにすれば元に戻せる)ので、Alt+Tabで起動中のアプリケーションを選択する方法を知らないと困ります。

注意点

 PCの画面環境や対象とする取引サイトの構成が変わった場合、指定した位置がずれてしまうのでカーソル位置を再取得する必要があります。