エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_GETリクエスト

この講座は有料講座です。
講座の購入後ご覧になれます。

ログインアカウントの新規作成

解説

この動画では、 Microsoft WinHTTP Services 5.1 を使ってGETリクエストをする例について説明しています。

ライブラリの参照からはじまり、リクエストの発行方法、レスポンスのステータスコードの確認方法、レスポンスヘッダー、ボディの取得方法。それぞれに、間違えやすいところ、落とし穴があります。学ぶべきことはいろいろあります。

この教材についての過去の質問・感想

5695 : 小川慶一の回答 (2016-02-03 18:57:45)

古口梨絵 さん:

日本語だとこんなページもありますね。

http://nakagami.blog.so-net.ne.jp/2006-08-29-1

検索キーワード「winhttp.winhttprequest.5.1 setproxy vb プロキシ」で検索しました。つまり、解説ページにいかにも含まれていそうな日本語を検索文字列に追加。


5694 : 小川慶一の回答 (2016-02-03 18:56:01)

古口梨絵 さん:

そうですか。
紹介したページのソース上部に、

'WinHttpRequest proxy settings.
Const HTTPREQUEST_PROXYSETTING_DEFAULT = 0
Const HTTPREQUEST_PROXYSETTING_PRECONFIG = 0
Const HTTPREQUEST_PROXYSETTING_DIRECT = 1
Const HTTPREQUEST_PROXYSETTING_PROXY = 2


とあります。
つまり、

HttpReq.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, _
    "proxy_server:80", "*.microsoft.com"


の大文字で書かれている定数部分は、 2 てことですね。
ここは、 2 に書き換えてから動作させてみたのでしょうか。
または、この行より前に、以下の一行を追加。

Const HTTPREQUEST_PROXYSETTING_PROXY = 2


あと、ここの値、0, 1, 2 すべて試してみたという理解でよいでしょうか。


5693 : 古口梨絵さんのコメント (2016-02-03 11:29:23)

小川慶一 さん:

私の拙い読解力(英語もマクロも)では、提示いただいたサンプルコードを動かすことができませんでした。

そもそも、一社員として今、取得できるプロキシサーバの情報が、
インターネットオプションのLANの設定で表示される
アドレスとポート番号のみ。

いただいたサンプルコード中の
HttpReq.SetProxy HTTPREQUEST_PROXYSETTING_PROXY, _
"proxy_server:80", "*.microsoft.com"
が該当する部分かと思いますが、
アドレスとポート番号をあてはめても動かないということは、
何か別の何かをシステム管理者に聞き出す必要があるのでしょうか。


>古口梨絵 さん:
>
>以下のページに、プロキシ設定をするVBのサンプルコードがありますね。
>http://www.jose.it-berater.org/winhttp/setproxy_method.htm
>この要領で会社のプロキシサーバの情報を追記すれば動くのではないかと。
>
>そのほか、まずは、 「winhttp.winhttprequest.5.1 setproxy vb」といったキーワードで調べられると良いかと思います。
>他の手法で動くようなのでまずは学習進められるかとは思いますが、 winhttp.winhttprequest.5.1 についてもう少し調べてみたいということであれば、試してみてください!
>
>とりいそぎ。
>
>
>>小川慶一 さん:
>>
>>早々の返答ありがとうございました。
>>
>>確かに、会社のマシンですので、プロキシサーバ経由ではあります。
>>マクロからは接続できませんが、ブラウザーからなら接続はできました。
>>(IE、Google-chromeの2つを入れているのですが、2つとも接続可)
>>
>>そして、ページを開きながら再度マクロにチャレンジしましたが、ダメでした。
>>
>>時間帯の混み合い具合?とも思い、朝イチで試してみましたが、これもダメ。
>>
>>ちなみに、Microsoft XML(03_MSXML_基本.xls)と
>>Microsoft Internet Controls(05_IE制御してコンテンツを取得.xls)は
>>問題なく動きました。
>


5692 : 小川慶一の回答 (2016-02-03 09:15:17)

古口梨絵 さん:

以下のページに、プロキシ設定をするVBのサンプルコードがありますね。
http://www.jose.it-berater.org/winhttp/setproxy_method.htm
この要領で会社のプロキシサーバの情報を追記すれば動くのではないかと。

そのほか、まずは、 「winhttp.winhttprequest.5.1 setproxy vb」といったキーワードで調べられると良いかと思います。
他の手法で動くようなのでまずは学習進められるかとは思いますが、 winhttp.winhttprequest.5.1 についてもう少し調べてみたいということであれば、試してみてください!

とりいそぎ。


>小川慶一 さん:
>
>早々の返答ありがとうございました。
>
>確かに、会社のマシンですので、プロキシサーバ経由ではあります。
>マクロからは接続できませんが、ブラウザーからなら接続はできました。
>(IE、Google-chromeの2つを入れているのですが、2つとも接続可)
>
>そして、ページを開きながら再度マクロにチャレンジしましたが、ダメでした。
>
>時間帯の混み合い具合?とも思い、朝イチで試してみましたが、これもダメ。
>
>ちなみに、Microsoft XML(03_MSXML_基本.xls)と
>Microsoft Internet Controls(05_IE制御してコンテンツを取得.xls)は
>問題なく動きました。


5691 : 古口梨絵さんのコメント (2016-02-03 09:05:52)

小川慶一 さん:

早々の返答ありがとうございました。

確かに、会社のマシンですので、プロキシサーバ経由ではあります。
マクロからは接続できませんが、ブラウザーからなら接続はできました。
(IE、Google-chromeの2つを入れているのですが、2つとも接続可)

そして、ページを開きながら再度マクロにチャレンジしましたが、ダメでした。

時間帯の混み合い具合?とも思い、朝イチで試してみましたが、これもダメ。

ちなみに、Microsoft XML(03_MSXML_基本.xls)と
Microsoft Internet Controls(05_IE制御してコンテンツを取得.xls)は
問題なく動きました。


>古口梨絵 さん:
>
>何でしょうね。
>
>とりあえず、以下で検索してみました。
>2147012894 タイムアウト
>
>それで見つかったページのひとつに以下があります。
>http://stackoverflow.com/questions/29818763/excel-vba-timeout-error-2147012894
>
>ここを読んでみて気になったのが、プロキシサーバ経由でのアクセスではありませんか?というのがひとつ。
>あと、そのマシンで同じURLにブラウザー経由で接続できますでしょうか。
>ブラウザー経由でつながったら直後にまたマクロ実行してみてください。
>
>さて、どうなるか。
>僕も分かりませんが、まずはやってみましょう。
>


5681 : 小川慶一の回答 (2016-02-02 15:16:53)

古口梨絵 さん:

何でしょうね。

とりあえず、以下で検索してみました。
2147012894 タイムアウト

それで見つかったページのひとつに以下があります。
http://stackoverflow.com/questions/29818763/excel-vba-timeout-error-2147012894

ここを読んでみて気になったのが、プロキシサーバ経由でのアクセスではありませんか?というのがひとつ。
あと、そのマシンで同じURLにブラウザー経由で接続できますでしょうか。
ブラウザー経由でつながったら直後にまたマクロ実行してみてください。

さて、どうなるか。
僕も分かりませんが、まずはやってみましょう。


5680 : 古口梨絵さんのコメント (2016-02-02 14:46:09)

お世話になっております。
今回、01_WinHttp_基本.xlsでMicrosoft WinHTTP Services 5.1を使ってGETリクエストをする、
ということでワクワクしながらF8(ステップイン)で進めていくと、
xh.send
で止まってしまいました。
実行時エラー'-2147012894(80072ee2)':処理がタイムアウトになりました
とのことです。

どのように対処すればこの先進められるのでしょうか。


3997 : 小川慶一の回答 (2015-03-19 16:12:59)

匿名 さん:

サイト確認しました。なるほど。

91_WinHttp_ADO.xls のサンプルを参考に、文字コードを変換します。

当該ページならば、ソース4行目に <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> とありますから、 strm.Charset = "UTF-8" で。(つまり、そのまま)
解析は、手間がかかりますが文字列操作関数を使ってガシガシ行うことになるかと。

とりいそぎ。


>東映アニメーションのページです。例えば下記のページです。
>http://www.toei-anim.co.jp/tv/dragon_kai/introduction/
>
>
>小川慶一 さん:
>
>>匿名 さん:
>>
>>質問ありがとうございますが
>>
>>どこのページでしょうか。URL教えてください。僕も見てみます。
>>
>>>サイトによっては、xh.Response Textの時点で文字化けしていることがあります。これに対応するにはどうしたらいいのでしょう。
>>
>


3996 : 受講生さんのコメント (2015-03-19 13:23:38)

東映アニメーションのページです。例えば下記のページです。
http://www.toei-anim.co.jp/tv/dragon_kai/introduction/


小川慶一 さん:

>匿名 さん:
>
>質問ありがとうございますが
>
>どこのページでしょうか。URL教えてください。僕も見てみます。
>
>>サイトによっては、xh.Response Textの時点で文字化けしていることがあります。これに対応するにはどうしたらいいのでしょう。
>


3995 : 小川慶一の回答 (2015-03-19 12:26:13)

匿名 さん:

質問ありがとうございますが

どこのページでしょうか。URL教えてください。僕も見てみます。

>サイトによっては、xh.Response Textの時点で文字化けしていることがあります。これに対応するにはどうしたらいいのでしょう。


3994 : 受講生さんのコメント (2015-03-19 11:56:02)

サイトによっては、xh.Response Textの時点で文字化けしていることがあります。これに対応するにはどうしたらいいのでしょう。


3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 エクセルマクロVBA「Web連携」講座の概要
    【動画1】 エクセルマクロVBA「Web連携」講座の概要 未習得
  2. 【動画2】 エクセルマクロVBA「Web連携」サーバとクライアント
    【動画2】 エクセルマクロVBA「Web連携」サーバとクライアント 未習得
  3. 【動画3】 エクセルマクロVBA「Web連携」ApacheとCGI
    【動画3】 エクセルマクロVBA「Web連携」ApacheとCGI 未習得
  4. 【動画4】 エクセルマクロVBA「Web連携」セッションとポート
    【動画4】 エクセルマクロVBA「Web連携」セッションとポート 未習得
  5. 【動画5】 エクセルマクロVBA「Web連携」クライアントとは
    【動画5】 エクセルマクロVBA「Web連携」クライアントとは 未習得
  6. 【動画6】 エクセルマクロVBA「Web連携」リクエストとレスポンスとは
    【動画6】 エクセルマクロVBA「Web連携」リクエストとレスポンスとは 未習得
  7. 【動画7】 エクセルマクロVBA「Web連携」GETリクエスト
    【動画7】 エクセルマクロVBA「Web連携」GETリクエスト 未習得
  8. 【動画8】 エクセルマクロVBA「Web連携」POSTリクエスト
    【動画8】 エクセルマクロVBA「Web連携」POSTリクエスト 未習得
  9. 【動画9】 エクセルマクロVBA「Web連携」Cookieを使ったリクエスト
    【動画9】 エクセルマクロVBA「Web連携」Cookieを使ったリクエスト 未習得
  10. 【動画10】 エクセルマクロVBA「Web連携」HTMLコンテンツの取得と解析_概要
    【動画10】 エクセルマクロVBA「Web連携」HTMLコンテンツの取得と解析_概要 未習得
  11. 【動画11】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_GETリクエスト
    【動画11】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_GETリクエスト 未習得
  12. 【動画12】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_POSTリクエスト
    【動画12】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_POSTリクエスト 未習得
  13. 【動画13】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_Cookie
    【動画13】 エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_Cookie 未習得
  14. 【動画14】 エクセルマクロVBA「Web連携」DOM(Document Object Model)を使った解析_概要
    【動画14】 エクセルマクロVBA「Web連携」DOM(Document Object Model)を使った解析_概要 未習得
  15. 【動画15】 エクセルマクロVBA「Web連携」DOMを使った解析_基礎
    【動画15】 エクセルマクロVBA「Web連携」DOMを使った解析_基礎 未習得
  16. 【動画16】 エクセルマクロVBA「Web連携」DOMを使ったサンプル
    【動画16】 エクセルマクロVBA「Web連携」DOMを使ったサンプル 未習得
  17. 【動画17】 エクセルマクロVBA「Web連携」DOM活用のテクニック
    【動画17】 エクセルマクロVBA「Web連携」DOM活用のテクニック 未習得
  18. 【動画18】 エクセルマクロVBA「Web連携」DOMの活用例_メルマガのタイトルを取得
    【動画18】 エクセルマクロVBA「Web連携」DOMの活用例_メルマガのタイトルを取得 未習得
  19. 【動画19】 エクセルマクロVBA「Web連携」DOMの活用例_複数のメルマガ解除を自動化
    【動画19】 エクセルマクロVBA「Web連携」DOMの活用例_複数のメルマガ解除を自動化 未習得
  20. 【動画20】 エクセルマクロVBA「Web連携」Microsoft XMLを活用したコンテンツ取得
    【動画20】 エクセルマクロVBA「Web連携」Microsoft XMLを活用したコンテンツ取得 未習得
  21. 【動画21】 エクセルマクロVBA「Web連携」Microsoft XML_活用例
    【動画21】 エクセルマクロVBA「Web連携」Microsoft XML_活用例 未習得
  22. 【動画22】 エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例
    【動画22】 エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例 未習得
  23. 【動画23】 エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得
    【動画23】 エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得 未習得
  24. 【動画24】 エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得
    【動画24】 エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得 未習得
  25. 【動画25】 エクセルマクロVBA「Web連携」DOMを使ってXMLを解析
    【動画25】 エクセルマクロVBA「Web連携」DOMを使ってXMLを解析 未習得
  26. 【動画26】 エクセルマクロVBA「Web連携」Web連携のよくある問題
    【動画26】 エクセルマクロVBA「Web連携」Web連携のよくある問題 未習得
  27. 【動画27】 エクセルマクロVBA「Web連携」総括
    【動画27】 エクセルマクロVBA「Web連携」総括 未習得
  28. 【動画28】 AJAX通信の解析1: 背景、対応、流れの簡単な説明
    【動画28】 AJAX通信の解析1: 背景、対応、流れの簡単な説明 未習得
  29. 【動画29】 AJAX通信の解析2: 流れと事例の詳細
    【動画29】 AJAX通信の解析2: 流れと事例の詳細 未習得
  30. 【動画30】 クッキーを取得する方法
    【動画30】 クッキーを取得する方法 未習得
  31. 【動画31】 セッションの解析と実装-イントロダクション
    【動画31】 セッションの解析と実装-イントロダクション 未習得
  32. 【動画32】 「セッション」とは?その目的と、ウェブページでの事例
    【動画32】 「セッション」とは?その目的と、ウェブページでの事例 未習得
  33. 【動画33】 セッション解析と実装の落とし穴
    【動画33】  セッション解析と実装の落とし穴 未習得
  34. 【動画34】 セッション解析と実装のサンプルデータ解説
    【動画34】 セッション解析と実装のサンプルデータ解説 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ