2014/10/10 VBAでIEを制御するんだけど [パソコンとか]
自宅からパソコンでちょっとした作業をすることで、ちょっとだけどお小遣い稼ぎができるサイトを発見。
パソコンのプログラム開発や、100万円クラスのプロジェクト、ホームページやロゴ・イラストの作成依頼、 テープ起こし、商品へのシール張りなど、いろんな仕事の依頼があります。
手ごろな作業は競争率が高く、なかなか受注できませんが。
その中で、まぁ大した金額にはならないんですが、簡単にできる作業として、ネットで検索してその結果を報告するというのがあります。
数件ほど検索サイトで検索をかけて、見つかったサイトのURLを報告するだけ。
1回5円から10円なんで、アンケートサイトでポイントをためるのとあまり変わらない感じですが、作業件数がわりとあるので、時間があれば自分のやりたいだけ作業ができて良いです。
アンケートサイトは、多くても日に10件くらいなんで。
さて、この検索作業、普通にIEを操作してやっても、対して時間がかかるものではないのですが、頻繁にコピペをしなければならないので、ちょっと面倒です。
なにかしらプログラムで作業の補助ができないかと考えて、IEを制御する方法を調べてました。
IEは内部のオブジェクトモデルの資料があり、わりと簡単に外部から操作できるようで、ネットで調べておおよそやりたいことはできるようになりました。
IEを起動 > 検索サイトへ移動 > 検索ボックスにキーワードをセット > 検索実行
もうひとつ、
IEから現在のページのURLを取得する。
しかし、そう簡単にはいかなくて、問題発生。
ざっくり作って、何度か動かしていると、不思議な現象に遭遇。
画面には検索結果から移動したサイトが表示されているのに、LocationURLを参照しても、最初に移動した検索サイトのトップのURLが返ってきます。
しかし、何度かやっていると、ときどき成功します。ステップ実行だとうまくいくみたい。
で、Shell.Applicationの、Windows.Countを参照したら、IEは1個、タブも1個なのに、2が返ってきました。(エクスプローラーも開いていない。)
1つ多いんですけど。
ウォッチでオブジェクトの中を確認したら、1つめは検索サイトのトップのURLで、2つめに現在のページのURLが入ってました。
なぜひとつ増える?
タイミングは、検索キーワードをセットして、submitを実行した直後に、増えてました。
しかし、ステップ実行すると、増えないんです。
どうやら、ExcelのVBAからIEをいじってることに問題がありそうです。
1つめの方は見えていないし、必要ないから閉じてやろうとQuitメソッドを実行したのですが、消えてくれません。
2つめをQuitすると、一緒に消えました。
そして、HWNDが同じ値です。
解決策が見つからないので、とりあえず最後のやつからURLを取得するようにして、対処しました。
気持ち悪いけど。
コメント 0