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・・・ここでエラーです。
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
受講生さんの投稿
(投稿ID: 3600)
またご無沙汰しております。
質問内容ですが、下記匿名さんと一緒で、
「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アップデートと関係があるのでしょうか?結構、時間がかかったアップデートだったので。
小川 慶一さんのコメント
(コメントID: 5088)
おはようございます。
すいません、こちらのサーバ側の設定の問題のようです。
解消するまで、少しお待ちください。
> お世話になっております。
> またご無沙汰しております。
>
> 質問内容ですが、下記匿名さんと一緒で、
> 「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アップデートと関係があるのでしょうか?結構、時間がかかったアップデートだったので。
>
小川 慶一さんのコメント
(コメントID: 5089)
サーバの設定を変更しました。
これで、どうでしょうか。うまくいくはずなのですが...。
> お世話になっております。
> またご無沙汰しております。
>
> 質問内容ですが、下記匿名さんと一緒で、
> 「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アップデートと関係があるのでしょうか?結構、時間がかかったアップデートだったので。
>
平吹 敦史さんのコメント
(コメントID: 5091)
まだ、上手くいきません。
ただ、他の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
田中 宏明さんのコメント
(コメントID: 5092)
私もMicrosoft XMLで試してみたところ 実行時エラー '-2147024891
となりました。
そこで以下のようにURLをhttp:→https: xh.Open "GET", "https://www.exvba.com/ws/dombasic.html"
に変更したら正常に動作しましたことを報告します。
小川 慶一さんのコメント
(コメントID: 5093)
そうですか...。
>下記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 についてはキャッシュが残っているせいでうまくいかない状況が続いたとしても、他のページについては無事に動作しているようなので、先に進むための支障はなさそうにも思います。
こちらのサーバ設定がおかしかったためにお手数いただいてしまい大変恐縮ですが...。どうぞよろしくお願いいたします。
小川 慶一さんのコメント
(コメントID: 5094)
報告ありがとうございます。
https://forum.pc5bai.com/lesson/page/392/?id=c9283 に書いたとおり、クライアント側で持っているキャッシュが悪さをしているのでは?というのが第一感です。
id9283の投稿に書いたとおりに試していただけますでしょうか。
http://www.exvba.com/4skills.php のように http のリクエストが来たら、自動的に https://www.exvba.com/4skills.php のように https のリクエストに変換してリクエストするようクライアントに要請する命令をサーバに仕込んでいました。
その影響で、 http://www.exvba.com/ws/dombasic.html などの本講座用に準備したページへのエクセルからのリエクストでエラーが生じるようになってしまいました。
この件については秋ごろに問題を確認して対応済だったのですが、最近サーバ設定を外部の方に見直していただいた際、問題が再発する状況になってしまったようです。
ウェブ技術について詳しくない方がウェブへのリクエストの仕様について学ぶ方向けの教材としては、あってはならない設定ミスです。
申し訳なく思っています。
田中 宏明さんのコメント
(コメントID: 5096)
本講座を受講し、Webサイトについて理解が深まりました。
引き続きよろしくお願いします。
平吹 敦史さんのコメント
(コメントID: 5097)
無事解決です。
結果論ですが、キャッシュについての理解が深まったというところでしょうか・・・
小川 慶一さんのコメント
(コメントID: 5098)
そう言っていただければさいわいです。
この度は申し訳ありませんでした。
小川 慶一さんのコメント
(コメントID: 5099)
そう言っていただければさいわいです。
この度は申し訳ありませんでした。