2

私はこの問題を解決しようと、何日もぐるぐる回っています。

サイトにログインして、VBA と InternetExplorer オブジェクトを使用してファイルをダウンロードしようとしています。問題は、コードがハイパーリンクをクリックすると、Internet Explorer (私の場合はバージョン 10) からプロンプトが表示されることです。

これが私が試したことです:

  1. URLDownloadToFile . ログインしないとファイルにアクセスできないため、これは機能しません。

  2. Internet Explorerで開く/保存するプロンプトを無効にします。また、行きません。このプロンプトはセキュリティの「機能」として設計されており、無効にできないように設計されています。レジストリ キーを手動で入力するとうまくいくと言う人もいますが、私にはうまくいきませんでした。(たぶん、正しいレジストリ キーを実行していないのでしょうか?

  3. プロンプトを無効にする Internet Explorer 用のダウンロード マネージャー アドインはありますか? まだ見つかっていません。

  4. SendKeys ("%o") '(Alt + o)。これは「ファイルを開く」をクリックする必要があります。なぜそれを使用しないのですか?信頼できないからです。ユーザーは、アクティブなウィンドウを切り替えることがあります。(特定のウィンドウに「キーを送信」する方法はありますか?)

  5. WinHttpRequestを使用します。これはおそらく機能するはずですが、WinHttpRequest の使用方法を学び、すべてのコードを書き直すのは大変な作業のようです。(怠惰な人はもっと仕事をしているかもしれません) さらに、WinHttpRequest のデバッグは、IE で何が起こっているかを見ることができる間、アクションが表示されないため、はるかに難しいように思われます。

  6. iマクロ。理論的には、Web サイトのフィールドに入力すると、iMacros を使用してファイルをダウンロードできます。iMacros の問題点は、読み込みと終了に時間がかかることです。iMacro を使用して FireFox をロードし、Web サイトをロードしてから Firefox を閉じる必要があります。私の VBA プログラムは、何百ものファイルをダウンロードするように設計されています。

ヘルプ!ありがとうございました。

4

1 に答える 1

1

解決策は、エクスプローラーの「ヘルプ」を利用しようとするのではなく、cURL を使用することです。これを行う方法の詳細については、Equivalent cURL in VBA?を参照してください。. ただし、応答を MsgBox に送信する代わりに、ファイルを開いて書き込みます。もちろん、これは実際に使用WinHTTPRequestされており、質問で「それは非常に多くの作業のように思えます」とすでに述べているため、ソリューションに満足するかどうかはわかりません.

注 - このOptionsプロパティにはトリッキーな使い方があります。使用方法の詳細については、 http://msdn.microsoft.com/en-us/library/windows/desktop/aa384108(v= vs.85) を参照してください。 aspx。与えられた例では、オプション SslErrorIgnoreFlags が 13056 に設定されています。0x3300これは、「すべてのエラーを無視する」ことを意味します。

Unknown certification authority (CA) or untrusted root      0x0100
Wrong usage                                                 0x0200
Invalid common name (CN)                                    0x1000
Invalid date or certificate expired                         0x2000

これで十分だと思います-あなたの質問の詳細を考えると、私はほとんど疑いの余地がありません!

別の提案 (これが実用的かどうかは不明) - VBA 以外のプラットフォームを使用してください。この目的のためだけにツールボックスを備えた多くの高度な言語があります。私の個人的なお気に入りは PHP の cURL ですが、Python にも非常に優れたオプションがいくつかあります。しかし、それが意味をなすかどうかは、これを何に接続しようとしているかによって異なります。

于 2013-06-28T00:29:52.920 に答える