• 締切済み

エクセル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 よろしくお願いいたします。

みんなの回答

  • Azzz___
  • ベストアンサー率40% (9/22)
回答No.2

こんにちは。 この手の方法は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)
回答No.1

>ここで、「ファイルのダウンロード」メッセージ >  開く(O) 保存(S) キャンセル >が表示されるのですが、表示されたとたんにVBAから制御できなくなります。 仮に 開く(O)ならば 最後に SendKeys "O", True を実行し見ててダメでしょうか?

関連するQ&A