質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

Q&A

0回答

1328閲覧

ServerXMLHTTP での挙動が2台のPCで異なる

coo.shiba

総合スコア0

XML

XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

0グッド

0クリップ

投稿2020/10/12 06:26

VBAで"MSXML2.ServerXMLHTTP"を使って、所定のURLのサイトからXMLファイルのテキスト情報を取得したいと思っています。このためにvば
Sub GetXMLData()
strURL = "http://85.184.234.53:8080/wopublish-search/service/patents/application/2011-17603/biblio"

Set http = CreateObject("MSXML2.ServerXMLHTTP") http.Open "GET", strURL, False http.send s = http.responseText MsgBox s

End Sub

のように作ってみたのですが、2台のPCで実行させたところ1台は正常にXML文字列が取得され、MsgBoxで表示されました。しかし別の1台では、"http.send" のところで、「実行時エラー'-2147012867(80072efd)'/サーバーに接続できませんでした」とエラーが発生してしまいます。

2台のPCは、いずれもWin10・Excel2016です。取得しようとしているXMLファイルが "encoding="UTF-8" であることが気になりますが、1台のPCでは問題なく取得できており、双方の動作の違いの原因なのかどうかは不明です。

知見のある方にアドバイスいただきたいと思います。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2020/10/12 06:59 編集

> 実行時エラー'-2147012867(80072efd)'/サーバーに接続できませんでした」とエラーが発生してしまいます。 と出ているように、恐らく単にそのPC、VBAプログラムから指定のサーバーに接続できないのだと思います。「取得しようとしているXMLファイルが "encoding="UTF-8" 」以前の問題です。 80072efdとは、WindowsのAPI(Windowsが提供するI/F)が返すエラーコード、(WININET_E_CANNOT_CONNECT -2147012867,0x80072EFD) を示しています。ダメな方のPCからブラウザで http://85.184.234.53:8080/wopublish-search/service/patents/application/2011-17603/biblio へアクセスするとどうなりますか?
coo.shiba

2020/10/12 07:04

ありがとうございます。 >ダメな方のPCからブラウザで >・・・・ >へアクセスするとどうなりますか? IEからもChromeからも、正しくアクセスすることができます。 ちなみに双方のPCは同じネットに接続して動作を確認しています。
dodox86

2020/10/12 07:28

ブラウザではOKでしたか。"MSXML2.ServerXMLHTTP"の細かいバージョン違いのせいか、マシンのWindows環境依存の問題か。 参考: https://support.microsoft.com/ja-jp/help/290761/frequently-asked-questions-about-serverxmlhttp "MSXML2.ServerXMLHTTP"はどちらかというとサーバープログラムで利用するものです。(VBAで使っていけないという訳ではありません) WinHTTPと言うWindows内部の機能の設定に一部、引きずられます。ダメな方PCでは何か、プロキシサーバーとかWebフィルタリングその他、セキュリティ製品がインストールされていたりしませんか。
coo.shiba

2020/10/12 08:44

双方のPCの「セキュリティ製品」には差がありません。 また、双方のPCともに http://85.184.234.53を「信頼済みサイト」に設定し、 「信頼済みサイト」の「レベルのカスタマイズ」設定で、すべてのラジオボタンが同一になるように設定済みです。 でも動作が違うと言うことは、何かが違うんでしょうね。 ところで、この「レベルのカスタマイズ」、複数のPCが同じ設定になっていることは目視で確認するしかないのでしょうか?首を左右に大きく振るだけで間違えそうなのでRemote Desktopを使って、すぐ横に表示させて目視確認した次第です。
coo.shiba

2020/10/12 09:14

dodox86様 以前別のプログラムで、 CreateObject("MSXML2.MSXMLHTTP") では旨く動かないところを、 CreateObject("MSXML2.ServerXMLHTTP") に変更したら動作したため、ついそのまま使い続けていました。 ふと我に返って CreateObject("MSXML2.MSXMLHTTP") に「戻してみた」ところ、動作しなかった方のPCでも動くことが確認できました。 ServerXMLHTTP で動かない原因は長い目で追いかけることにし、当面は MSXMLHTTP で凌ぐことにします。
dodox86

2020/10/12 10:18

"MSXMLHTTP"はIEのようなクライアントサイドのモジュールですし、それで用が足りるのであればそちらで良いと思います。「MSXMLHTTPに変えた」旨を自己回答として投稿して、自己解決で質問を閉じてしまってください。
coo.shiba

2020/10/12 10:30

dodox86様 ありがとうございました。ただ、ServerXMLHTTP で動かないことが癪に障るため、何か有益な情報があれば試してみたいと思っています。もう少しOpen状態で置いておきたいと思います。
dodox86

2020/10/12 10:33

なるほど、Openのままとする旨、承知しました。他の有識者の方がいらっしゃるかもしれないので、その方が良いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問