プロが教えるわが家の防犯対策術!

Access2003のVBAでIEを立ち上げて、あるサイトにログインした後、
サイトのメニュー上にあるCSVダウンロードをキックしてファイルを
ダウンロードしようとしてます。

下記のようなコードを書いて見ましたが、表向きエラーは出ないものの
ファイルのダウンロードは出来ません。
ブラウザ立ち上げ→ログインまではうまくいっています。
さらに詳細に調べると、URLDownloadToFileのところでエラーを
返していて失敗しているということが判明しました。

エラーコードは-2146697208となっています。

こちら何が問題でしょうか?どなたかご教示いただけると助かります。

Sub ie_test()

Dim objIE As Object
Const strURL = "https://xxx.com/csv.php?command=Csv"
Dim strFNAME As String
Dim returnValue

Set objIE = CreateObject("InternetExplorer.application")

objIE.Visible = True

objIE.Navigate "https://xxx.com/"

Do While objIE.Busy = True
DoEvents
Loop

objIE.Document.Forms(0).loginid.Value = "myname" 'ユーザー名
objIE.Document.Forms(0).passwd.Value = "pswd" 'パスワード

'フォームをSubmitする
objIE.Document.Forms(0).submit

Do While objIE.Busy Or (objIE.ReadyState <> 4): DoEvents: Loop 'READYSTATE_COMPLETE=4

'URLDownloadToFile API をコールする
strFNAME = "c:\test.csv"
returnValue = URLDownloadToFile(0, strURL, strFNAME, 0, 0)

objIE.Quit '.Quitで閉じる

End Sub

A 回答 (2件)

IE を操作して CSV のダウンロードリンクをクリックすることは、


できないのでしょうか?

URLDownloadToFile API で SSL サイトからのダウンロードは
VBA ではかなりキツイようです。

参考URL:IE7「ファイルのダウンロード」のクリック
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?p …

理由は、参考 URL 先で K.J.K 氏が説明しておられます。

また、同氏の WEB ページにおいてクラスモジュールが公開されてます。
http://www.koalanet.ne.jp/~akiya/vbtaste/vbp/

中段にある、「ファイルを手軽にダウンロードする:EasyDL3.lzh」
です。

VB6 向けですが、参考になると思いますよ。
    • good
    • 0

少し試してみましたが、httpsの場合にエラーが返されます。


URLDownloadToFile自体がhttpsに対応していない可能性がありますね。

また仮に通ったとしても、ブラウザのインスタンスが異なるので新規セッション(未認証)として扱われ、ユーザー認証ではじかれる可能性があります。

代替案が出せませんが、ひとまずアドバイスを。
    • good
    • 0
この回答へのお礼

ありがとうございます。
私もそんな気がしております。

同じセッション内でファイルダウンロードできる方法あれば
是非ご教示ください。

お礼日時:2009/10/25 16:24

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A