InternetExplorerに関する質問です。

AccessVBA使ってIEを立ち上げて会員専用ページにログイン後、
ファイルをダウンロードするプログラムを書いています。
この際に「ファイルのダウンロード」というダイアログを出さずに
次々に保存する方法はありませんでしょうか?

Set objIE = CreateObject("InternetExplorer.application")
objIE.Navigate "https://abc.com/login"
objIE.Document.Forms(0).loginid.Value = "who" 'ユーザー名
objIE.Document.Forms(0).passwd.Value = "pswd" 'パスワード
objIE.Document.Forms(0).submit

objIE.Navigate "https://abc.com/download?command=CsvDL"
ログインまではできますが、最後の行でダイアログが出て止まってしまいます。
ちなみにダウンロードするファイルがCSVファイルなので、
Windowsエクスプローラーの「ツール」「フォルダオプション」「ファイルの種類」
からCSVファイルの設定で「ダウンロード後に確認する」のチェックも外して
見ましたが変化はありませんでした。

回答の条件
  • 1人2回まで
  • 登録:2009/10/25 19:46:33
  • 終了:2009/10/26 14:10:27

ベストアンサー

id:HALSPECIAL No.3

HALSPECIAL回答回数407ベストアンサー獲得回数862009/10/25 21:50:48

ポイント42pt

再回答ですみません。

>おそらくなのですが、サーバー側のレスポンスヘッダのContentTypeの指定がcsvの指定になっていない為と思います。

>なので、現状の手法でのダウンロードでは、ブラウザの設定を変えても解決しないと思っています。

勘違いというか、寝ぼけた事を言ってしまいました。

この部分は無かった事にしてください。汗


「InternetExplorer.application」で行くのであれば、

WIN32APIでメッセージを投げて、ボタンを押してしまうという方法もあります。


過去質問ですが、こちらを参考にしてください。

question:1248657374:title

id:handmadedude

ご回答ありがとうございます。

試しにこちらのコードをそのまま貼ってやって見ましたが

「ファイルのダウンロード」ダイアログを検知することなく

そのまま流れてしまいました。

が、こちらを参照したところ

http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200901/0901...

WIN32APIでボタンを押すということが出来ましたので

一件落着しました。

いろいろヒント頂き勉強になりました。

2009/10/26 14:09:20

その他の回答(2件)

id:kn1967 No.1

kn1967回答回数2915ベストアンサー獲得回数3012009/10/25 20:38:47

ポイント25pt

詳細な環境が不明のため、ヒント的なもののみとなりますが、

support.microsoft.comからいくつかチョイスしてみましたので、

適宜参照ください。


確認せずに、ファイルをダウンロードする方法


DeleteUrlCacheEntry でキャッシュ(インターネット一時ファイル)削除も必須。

アプリケーションで Visual Basic .NET では、Web ブラウザー コントロールをホストとキャッシュを消去する方法

  ↑ .Netですが基本同じなので・・・。


追記:

当該サイトを「信頼済みサイト」として登録しておく必要がある場合もあります。


余談:

ファイルをダウンロードする際に保存の確認メッセージが表示されない場合の対処方法 (Windows XP の場合)

id:handmadedude

ありがとうございます。

こちらもすでに試したのですが、URLDownloadToFileはSSLの聞いたサイトでは

うまく作動しない模様で、エラーとなってしまいます。

ログイン認証通してこのAPIを使う方法があるといいのですが・・・

2009/10/25 21:58:24
id:HALSPECIAL No.2

HALSPECIAL回答回数407ベストアンサー獲得回数862009/10/25 20:59:48

ポイント27pt

おそらくなのですが、サーバー側のレスポンスヘッダのContentTypeの指定がcsvの指定になっていない為と思います。

なので、現状の手法でのダウンロードでは、ブラウザの設定を変えても解決しないと思っています。


個人的には「InternetExplorer.application」よりも、

こちらの質問にあるような、

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1115967...

「MSXML2.XMLHTTP」をお勧めします。


特に、「ataddprocerさん」の回答がいいです。

ただし、この人の回答でも言及しているのですが、ログイン画面を経由する為、実際のリクエスト、レスポンスの状況を見て作りこんでいかなくてはなりません。


「MSXML2.XMLHTTP」で分からないことがあれば、できる範囲でフォローは可能です。

id:HALSPECIAL No.3

HALSPECIAL回答回数407ベストアンサー獲得回数862009/10/25 21:50:48ここでベストアンサー

ポイント42pt

再回答ですみません。

>おそらくなのですが、サーバー側のレスポンスヘッダのContentTypeの指定がcsvの指定になっていない為と思います。

>なので、現状の手法でのダウンロードでは、ブラウザの設定を変えても解決しないと思っています。

勘違いというか、寝ぼけた事を言ってしまいました。

この部分は無かった事にしてください。汗


「InternetExplorer.application」で行くのであれば、

WIN32APIでメッセージを投げて、ボタンを押してしまうという方法もあります。


過去質問ですが、こちらを参考にしてください。

question:1248657374:title

id:handmadedude

ご回答ありがとうございます。

試しにこちらのコードをそのまま貼ってやって見ましたが

「ファイルのダウンロード」ダイアログを検知することなく

そのまま流れてしまいました。

が、こちらを参照したところ

http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200901/0901...

WIN32APIでボタンを押すということが出来ましたので

一件落着しました。

いろいろヒント頂き勉強になりました。

2009/10/26 14:09:20

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません