c. VBAからIEを操作する
作業開始
それでは実際に自動取引ツールを作るための作業を始めます。
新しい、マクロが有効なエクセルのファイルを作成してください。
ファイル名は何でもよいのですが、とりあえず「trade.xlsm」としましょう。
まずはこのファイルを使って自動取引ツールを作るために必要な機能を追加しながら、プログラムの動作を確認していきます。
参照設定の追加
最初にVBAを使ってIEを操作してみましょう。
VBE(Visual Basic Editor)を開き、ツールバーの「ツール」→「参照設定」を選択し、「参照可能なライブラリ ファイル>」の中から「Microsoft Internet Controls」を見つけてチェックし、「OK」をクリックします。
これでVBAからIEを呼び出すことができるようになりました。
IEを起動してホームページを表示するコード
以下はIEを起動して指定したURLのページを表示するだけのコードです。
「'←挿入地点@」は、後でコードを追加する場所を示しています。
ところで、紹介するVBAのコードは自分で打ち込んでみた方が身につきますので、是非試してみることをおすすめします。
どうしてもコピペしたい場合はそのままだとブラウザによってはうまくコピーできないかもしれませんので、HTMLソースを表示して該当部分をコピーしてください。
表示されているwebページのHTMLソースは、IEでは右クリック→「ソースの表示」をクリックすることによって確認することができます。
はじめの一歩
ということで、上記のコードを実行してみると、IEが立ち上がり、GMOクリック証券のホームページ(ログイン画面)が表示されるはずです。
これでエクセルからIEを起動して指定したページを表示することができました。
エクセルVBAでIEを操作するための、簡単ですが重要なはじめの一歩です。
コードを簡単に解説
コードにコメントを付けたので蛇足かも知れませんが、一応解説します。
まず、IEオブジェクトを作成しています。このオブジェクトを使用することで、IEを操作してwebページへのアクセスを行うことができます。
続いてIE.VisibleにTrueをセットしてIEを表示しています。この値がFalseだとIEは表示されませんが実際には起動しているため、気づかないうちにメモリを使ってしまい、PCの動作が不安定になる場合があります。プログラムが途中で停止してしまった場合などにもプロセスが残ってしまうことがあるので、もしIEが起動しているようには見えないのにタスクマネージャーのプロセスに「iexplore.exe」がいる場合、手動でこのプロセスを終了させるようにしましょう。
次にIE.Navigate2の後にURLを指定することで、指定したURLのページを読み込むことができます。ここではGMOのログイン画面のURLを指定しています。
最後に、ページの読み込みが完了するのを待っています。ページが完全に読み込まれる前に操作しようとすると、ページ内にあるはずの要素が見つからないなど、期待通りの動作をしない場合があります。ページを移動した後に読み込み完了待ちをするのはセットと考えた方がよいでしょう。
DoEventsを呼ぶことにより、制御をWindowsに渡して他の処理を行うことができるようになりますので、長い時間がかかるループ内で使うことが多いです。ただし、本来行いたい処理に加えてDoEventsの分だけ実行する処理の量は増える(より多くの時間がかかる)ので、いつでも必ず使った方がよいというわけではありません。