エクセルマクロ オンライン講座コメント紹介

コメント紹介
   └ エクセルマクロVBA「Web連携」
       └ エクセルマクロVBA「Web連携」Microsoft XMLを活用したコンテンツ取得

エクセルマクロVBA「Web連携」Microsoft XMLを活用したコンテンツ取得

[9277] 2017-12-24 07:56:36 受講生さんからの投稿です。

お世話になっております。
またご無沙汰しております。

質問内容ですが、下記匿名さんと一緒で、
「Microsofr XML v6.0」(Microsofr XMLの最大値)では、ユーザ定義型は定義されておりません、となります。

「Microsofr XML v3.0」もあるため、そちらにチェックしたところ、コンパイルエラーは出ませんでした。

ですが、先生の下記sampleコードの実行段階で、「実行時エラー’-21470224891(80070005):
アクセスが拒否されました。」となります。

Sub DelMagPost()
Dim xh As New MSXML2.XMLHTTP
xh.Open "GET", "http://www.exvba.com/ws/dombasic.html";
xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xh.send・・・ここでエラーです。

Winhttpでは上手く動作しているので、send先のurlの問題ではなさそうです。

「Microsofr XML v3.0」ではダメということでしょうか?

WinhttpとInternet Controlsで十分な気がするので、XMLは後で検討するでもいい気はしますが。

先日のWindowsアップデートと関係があるのでしょうか?結構、時間がかかったアップデートだったので。

 


[9278] 2017-12-24 08:27:14 小川慶一さんからの投稿です。

受講生 さん:

おはようございます。
すいません、こちらのサーバ側の設定の問題のようです。

解消するまで、少しお待ちください。



> お世話になっております。
> またご無沙汰しております。
>
> 質問内容ですが、下記匿名さんと一緒で、
> 「Microsofr XML v6.0」(Microsofr XMLの最大値)では、ユーザ定義型は定義されておりません、となります。
>
> 「Microsofr XML v3.0」もあるため、そちらにチェックしたところ、コンパイルエラーは出ませんでした。
>
> ですが、先生の下記sampleコードの実行段階で、「実行時エラー’-21470224891(80070005):
> アクセスが拒否されました。」となります。
>
> Sub DelMagPost()
> Dim xh As New MSXML2.XMLHTTP
> xh.Open "GET", "http://www.exvba.com/ws/dombasic.html";
> xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
> xh.send・・・ここでエラーです。
>
> Winhttpでは上手く動作しているので、send先のurlの問題ではなさそうです。
>
> 「Microsofr XML v3.0」ではダメということでしょうか?
>
> WinhttpとInternet Controlsで十分な気がするので、XMLは後で検討するでもいい気はしますが。
>
> 先日のWindowsアップデートと関係があるのでしょうか?結構、時間がかかったアップデートだったので。
>

 


[9279] 2017-12-24 08:57:15 小川慶一さんからの投稿です。

受講生 さん:

サーバの設定を変更しました。
これで、どうでしょうか。うまくいくはずなのですが...。

> お世話になっております。
> またご無沙汰しております。
>
> 質問内容ですが、下記匿名さんと一緒で、
> 「Microsofr XML v6.0」(Microsofr XMLの最大値)では、ユーザ定義型は定義されておりません、となります。
>
> 「Microsofr XML v3.0」もあるため、そちらにチェックしたところ、コンパイルエラーは出ませんでした。
>
> ですが、先生の下記sampleコードの実行段階で、「実行時エラー’-21470224891(80070005):
> アクセスが拒否されました。」となります。
>
> Sub DelMagPost()
> Dim xh As New MSXML2.XMLHTTP
> xh.Open "GET", "http://www.exvba.com/ws/dombasic.html";
> xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
> xh.send・・・ここでエラーです。
>
> Winhttpでは上手く動作しているので、send先のurlの問題ではなさそうです。
>
> 「Microsofr XML v3.0」ではダメということでしょうか?
>
> WinhttpとInternet Controlsで十分な気がするので、XMLは後で検討するでもいい気はしますが。
>
> 先日のWindowsアップデートと関係があるのでしょうか?結構、時間がかかったアップデートだったので。
>

 


[9281] 2017-12-24 11:32:24 平吹 敦史さんからの投稿です。

お世話様です。

まだ、上手くいきません。
ただ、他のsampleコードは問題なく、下記Urlへアクセスする、
サブプロシージャ「DelMagPost」だけエラーになります。

Sub DelMagPost()
Dim xh As New MSXML2.XMLHTTP
xh.Open "GET", "http://www.exvba.com/ws/dombasic.html";
xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
xh.send・・・ここでエラー

Do Until xh.readyState = 4
DoEvents
Loop

If xh.Status <> 200 Then
MsgBox "リクエストに失敗しました" & vbNewLine & xh.Status & ":" & xh.statusText
End If

'レスポンスヘッダーをすべて出力
Debug.Print xh.getAllResponseHeaders

'レスポンスボディーをすべて出力
Debug.Print xh.responseText

Worksheets("response").Range("B1").Value = xh.getAllResponseHeaders
Worksheets("response").Range("B2").Value = xh.responseText
End Sub

 


[9283] 2017-12-24 14:33:08 小川慶一さんからの投稿です。

平吹 敦史さん:

そうですか...。

>下記Urlへアクセスする、 サブプロシージャ「DelMagPost」だけエラーになります。

ということなので、サーバの設定がおかしかったことで生じた問題の余韻がキャッシュのような形でまだ残っているのではないか?と思います。

ついては、念のため以下のテストをお願いできますか。

xh.Open "GET", "http://www.exvba.com/ws/dombasic.html";

を、以下の2つに変更してテストしてみてください。
僕の予想では、以下の[a], [b]ともに問題なく動作します。([a], [b]とも、得られるコンテンツは当初のサンプルコードと同じものです)

xh.Open "GET", "http://www.exvba.com/ws/dombasic_test.html"'[a]
xh.Open "GET", "https://www.exvba.com/ws/dombasic.html"; '[b]

上記 [a], [b] のどちらもうまく行かなかったとしたら、エクセルマクロ(と、エクセルマクロが参照しているライブラリの)問題です。

[a], [b]ともに問題なく動作したとしたら、サーバの設定がおかしかったことで生じた問題の余韻がまだ残っている可能性が高そうです。
その場合は、以下の手続きでキャッシュをクリアし、PCも再起動すれば、 dombasic.html も問題なく表示できるようになるのでは?と思います。

【キャッシュのクリアの方法(Win7まで, Win10以降とも同様)】
○全体の流れ
[1] 「ファイル名を指定して実行」ダイアログを呼び出す
[2] 「閲覧の履歴の削除」ダイアログを呼び出す
[3] 「閲覧の履歴の削除」ダイアログで、閲覧履歴にかかるすべてを削除する
[4] 「閲覧の履歴の削除」ダイアログを閉じる
[5] 「ファイル名を指定して実行」ダイアログを閉じる

○操作レベルでの詳細
[1-1] [wn] + [R] で「ファイル名を指定して実行」ダイアログを呼び出す
[1-2] 「ファイル名を指定して実行」ダイアログで inetcpl.cpl と入力して [Enter]
[2-1] 「インターネットのプロパティ」ダイアログが表示されたら、閲覧の履歴の「削除」ボタンを押す
[3,4] 「閲覧の履歴の削除」ダイアログが表示されたら、すべてのチェックに値が入っていることを確認して、 [OK] ボタンを押す
[5-1] 「インターネットのプロパティ」ダイアログに戻ってきたら、そこでも[OK]を押す

もっとも、 dombasic.html についてはキャッシュが残っているせいでうまくいかない状況が続いたとしても、他のページについては無事に動作しているようなので、先に進むための支障はなさそうにも思います。
こちらのサーバ設定がおかしかったためにお手数いただいてしまい大変恐縮ですが...。どうぞよろしくお願いいたします。

 


[9287] 2017-12-24 17:45:09 平吹 敦史さんからの投稿です。

お世話様です。

無事解決です。
結果論ですが、キャッシュについての理解が深まったというところでしょうか・・・

 


[9291] 2017-12-25 10:39:49 小川慶一さんからの投稿です。

平吹 敦史さん:

そう言っていただければさいわいです。
この度は申し訳ありませんでした。

 


まずはここから!スマホでも学べる無料動画講座

今なら先着30名限定で無料!定価4,800円の、初心者のためのエクセルマクロ動画講座。
  1. Excel 97~Excel 2016まですべて対応。動画本数20本、総再生時間2時間44分53秒
  2. PC, Mac, iPhone, iPad, Androidのお好みの環境で、いつでも好きなときに学べます。
2004年から10年間述べ3,000名以上に実施した研修の経験と実績を集約した講座です。
いますぐ無料で試してください。

トップへ