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ファイルの設定で「ダウンロード後に確認する」のチェックも外して
見ましたが変化はありませんでした。
再回答ですみません。
>おそらくなのですが、サーバー側のレスポンスヘッダのContentTypeの指定がcsvの指定になっていない為と思います。
>なので、現状の手法でのダウンロードでは、ブラウザの設定を変えても解決しないと思っています。
勘違いというか、寝ぼけた事を言ってしまいました。
この部分は無かった事にしてください。汗
「InternetExplorer.application」で行くのであれば、
WIN32APIでメッセージを投げて、ボタンを押してしまうという方法もあります。
過去質問ですが、こちらを参考にしてください。
question:1248657374:title
詳細な環境が不明のため、ヒント的なもののみとなりますが、
support.microsoft.comからいくつかチョイスしてみましたので、
適宜参照ください。
DeleteUrlCacheEntry でキャッシュ(インターネット一時ファイル)削除も必須。
アプリケーションで Visual Basic .NET では、Web ブラウザー コントロールをホストとキャッシュを消去する方法
↑ .Netですが基本同じなので・・・。
追記:
当該サイトを「信頼済みサイト」として登録しておく必要がある場合もあります。
余談:
ありがとうございます。
こちらもすでに試したのですが、URLDownloadToFileはSSLの聞いたサイトでは
うまく作動しない模様で、エラーとなってしまいます。
ログイン認証通してこのAPIを使う方法があるといいのですが・・・
おそらくなのですが、サーバー側のレスポンスヘッダのContentTypeの指定がcsvの指定になっていない為と思います。
なので、現状の手法でのダウンロードでは、ブラウザの設定を変えても解決しないと思っています。
個人的には「InternetExplorer.application」よりも、
こちらの質問にあるような、
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1115967...
「MSXML2.XMLHTTP」をお勧めします。
特に、「ataddprocerさん」の回答がいいです。
ただし、この人の回答でも言及しているのですが、ログイン画面を経由する為、実際のリクエスト、レスポンスの状況を見て作りこんでいかなくてはなりません。
「MSXML2.XMLHTTP」で分からないことがあれば、できる範囲でフォローは可能です。
再回答ですみません。
>おそらくなのですが、サーバー側のレスポンスヘッダのContentTypeの指定がcsvの指定になっていない為と思います。
>なので、現状の手法でのダウンロードでは、ブラウザの設定を変えても解決しないと思っています。
勘違いというか、寝ぼけた事を言ってしまいました。
この部分は無かった事にしてください。汗
「InternetExplorer.application」で行くのであれば、
WIN32APIでメッセージを投げて、ボタンを押してしまうという方法もあります。
過去質問ですが、こちらを参考にしてください。
question:1248657374:title
ご回答ありがとうございます。
試しにこちらのコードをそのまま貼ってやって見ましたが
「ファイルのダウンロード」ダイアログを検知することなく
そのまま流れてしまいました。
が、こちらを参照したところ
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200901/0901...
WIN32APIでボタンを押すということが出来ましたので
一件落着しました。
いろいろヒント頂き勉強になりました。
ご回答ありがとうございます。
試しにこちらのコードをそのまま貼ってやって見ましたが
「ファイルのダウンロード」ダイアログを検知することなく
そのまま流れてしまいました。
が、こちらを参照したところ
http://hpcgi1.nifty.com/MADIA/VBBBS/wwwlng.cgi?print+200901/0901...
WIN32APIでボタンを押すということが出来ましたので
一件落着しました。
いろいろヒント頂き勉強になりました。