この VBA 呼び出しは、proxyServer に格納されたプロキシを選択しているように見えます:

http.setProxy 1, proxyServer, bypassList

MSXML ServerXMLHTTP では、最初の引数がプロキシ モードを選択します。文書化されている値は、既定の構成が 0、直接接続が 1、明示的に指定したプロキシが 2 です。1 の後にアドレスを渡しても、直接モードが手動プロキシ モードになるわけではありません。

手動プロキシの最小例は次のとおりです:

Dim http As Object
Set http = CreateObject("MSXML2.ServerXMLHTTP.6.0")
http.setProxy 2, "proxy.example:8080", "<local>"
http.Open "GET", "https://example.com/", False
http.send

例のエンドポイントはプレースホルダーです。公開プロキシを確認するには、HTTP プロキシ一覧の HTTP アドレスに置き換えてください。3 番目の引数はバイパス リストです。ここで <local> は文書化されたローカル名の例外を使用します。最初のプロキシが失敗したときに試す 2 つ目のプロキシではありません。そこに別のプロキシの IP とポートを入れると、誤った種類の設定を表すことになります。

VBA の参照が公開している場所では名前付き定数を使用し、遅延バインディングを使う場合は該当する定数をローカルに定義して、レビュー時にモードが見えるようにしてください。

オブジェクトの種類にも注意してください。ServerXMLHTTP、ブラウザー向けの XMLHTTP、WinHttpRequest は異なる COM インターフェイスです。一方で動作する例は、もう一方の構成ソースを証明しません。正しいオブジェクトが手動プロキシ モードを選択したら、その経路に残る接続、認証、TLS のエラーを調べてください。

関連記事