dポイントプレゼントキャンペーン実施中!

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で出来ないでしょうか?

もしくは、もう少し分かりやすい方法は無いでしょうか。

(ファイルを保存しますか?のダイアログの「保存」をクリックして
 所定の場所におき、開きたい。 そのまま開くのでもいいけれど、動作が不安定になるのは困る)

以上、よろしくお願い致します。

A 回答 (1件)

直接ファイルのURLからダウンロード処理をすれば、わざわざダイアログを開かなくても簡単な気がしますが。



ファイルのダウンロードの方法について詳しく解説してあるサイトがありましたのでこちらを参考にされてはいかがですか。

参考URL:http://www.vba-ie.net/element/subroutine-filedow …

この回答への補足

仕組みは良く分かりませんが、
PHP上でフィルターをかけて?
Javascriptでダウンロード?するみたいです。

そのため、直接ファイルのダウンロードをしようにも
URLが分からず、上手くいかない状況です。
(たぶん、URLをクリックしたら「保存しますか?」というダイアログが出るのが
 最適なんだと思います)

参考リンクありがとうございます。勉強します。

補足日時:2014/09/05 17:04
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!