SSブログ

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を取得するようにして、対処しました。
 気持ち悪いけど。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。