VBA IEを操作。ファイルダウンロード
IEを操作して、ファイルをダウンロードしようと思います。
色んなサイトからとってきて、使わせてもらっています。
'---------------------------------IEを開くときに使う
Sub IE_OPEN(webUrl As String)
Dim objShell
Dim writesheet As Worksheet
Dim n As Long
Dim ID As String, Password As String
Set objShell = CreateObject("Shell.Application")
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.Navigate2 webUrl
Do While ie.Busy Or ie.readyState <> 4
DoEvents
Loop
Dim objINPUT
Set objINPUT = ie.document.getElementsByTagName("INPUT")
'ループで頭からテキストが 次へ を探す
For n = 0 To objINPUT.Length - 1
'※ type="submitボタンなので、.InnerTextじゃなくて、.Valueです ※※注意
If InStr(objINPUT(n).Value, "ログイン") > 0 Then '文字列の中から見つけたら
Worksheets("Sheet1").Activate
Do While ie.Busy
Loop
objINPUT(n).Click '見つけたINPUTタグのオブジェクトをクリック
Do While ie.Busy
Loop
Exit For
End If
Next
Set objINPUT = Nothing 'オブジェクト変数解放
End Sub
'------------------------------IEを開く(この段階では既に開いてあります。)
Private Sub CommandButton1_Click()
Do While ie.Busy Or ie.readyState <> 4
DoEvents
Loop
ie.document.all.ah_ehName.Value = Me.ComboBox1.List(Me.ComboBox1.ListIndex) 'ID
Do While ie.Busy
Loop
Dim objINPUT
Dim n As Long
Set objINPUT = ie.document.getElementsByTagName("INPUT")
For n = 0 To objINPUT.Length - 1
If InStr(objINPUT(n).Value, "ダウンロード") > 0 Then
objINPUT(n).Click
Do While ie.Busy
Loop
Exit For
End If
Next
Do While ie.Busy = True
DoEvents
Loop
SendKeys "%S", True'保存
Do While ie.Busy = True
DoEvents '何もしないループ(笑)
Loop
SendKeys "%O",True'ファイルを開く?
Do While ie.Busy = True
DoEvents
Loop
'ie.Quit
End Sub
’==================-
面倒なので、IEはPublic変数として
モジュールに書いています。
(色んなモジュールを経由する必要があるため、このような手段を取りました)
SendKeysをIEに送るというのが出来ずに困っています。
ダウンロードというボタンを押してのダウンロードなので、
ダウンロード用のURL等は分かりません。
Excel2003を使っています。
どうにかSendkeysで出来ないでしょうか?
もしくは、もう少し分かりやすい方法は無いでしょうか。
(ファイルを保存しますか?のダイアログの「保存」をクリックして
所定の場所におき、開きたい。 そのまま開くのでもいいけれど、動作が不安定になるのは困る)
以上、よろしくお願い致します。