- 締切済み
エクセルVBA ブラウザのコントロールについて
VBでIEオブジェクトを使用、yahooのとあるページを表示し、 その中の 「ダウンロード」ボタンを押すとcsvファイルをDLするプログラムを作っています。(vista、IE8) For Each objLINK In objIE.Document.Links If objLINK.InnerTEXT = "ダウンロード" Then objLINK2.Click Exit For End If Next ここで、「ファイルのダウンロード」メッセージ 開く(O) 保存(S) キャンセル が表示されるのですが、表示されたとたんにVBAから制御できなくなります。 どうすればボタンを押せるのでしょうか? なお、普通にIEオブジェクトを作ると、ダウンロードのボタンすら押せなかったので、 こちらの三流君様のページを参考にして、ユーザーフォームの中でIEオブジェクトを作っています。http://www.ken3.org/cgi-bin/group/vba_ie7.asp よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- Azzz___
- ベストアンサー率40% (9/22)
こんにちは。 この手の方法はIEの動作やPC環境によって、動作が微妙に変わることがあり、できる場合もあれば、できない場合もあるというのが私の感想です。 方法は2個あると思います。 既に回答がありますが、Sendkeyを使う方法です。 ただし、この方法が上記で言ったように、思うようにいかないので、 やたらと DoEventsを前後に入れてみたり、 For i = 1 to 1000 DoEvents Next i などど意味があるか分かりませんが、試したり Application.Wait(Now + vba.TimeSerial(0,0,5)) という方法も良く見かけるパターンです。 ただしいずれの方法でも、確実に動くかどうかが断言できない位 曖昧であると感じています。 そこで、もうひとつの方法をお勧め致します。 こちらはAPIを使ってダウンロードする方法です。 objLINK2をオブジェクトブラウザで確認(hrefかな?)すると リンク先が格納されているプロパティがあるので、それを上記のAPIで指定してやれば ダウンロードされるので、 必要に応じそれをShellなどで開いてあげればいいかと思います。 ダウンロードファイルはテンポラリにも保存できると思うので、 使い勝手まずまずです。
- hallo-2007
- ベストアンサー率41% (888/2115)
>ここで、「ファイルのダウンロード」メッセージ > 開く(O) 保存(S) キャンセル >が表示されるのですが、表示されたとたんにVBAから制御できなくなります。 仮に 開く(O)ならば 最後に SendKeys "O", True を実行し見ててダメでしょうか?