• 締切
  • すぐに回答を!

エクセルVBA ブラウザのコントロールについて

  • 質問No.6479768
  • 閲覧数819
  • ありがとう数1
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 0% (0/2)

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件)

  • 回答No.2

ベストアンサー率 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などで開いてあげればいいかと思います。
ダウンロードファイルはテンポラリにも保存できると思うので、
使い勝手まずまずです。
  • 回答No.1

ベストアンサー率 41% (888/2115)

>ここで、「ファイルのダウンロード」メッセージ
>  開く(O) 保存(S) キャンセル
>が表示されるのですが、表示されたとたんにVBAから制御できなくなります。

仮に 開く(O)ならば 最後に
SendKeys "O", True
を実行し見ててダメでしょうか?
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ