オンライン講座 質問と回答

無料・有料のオンライン講座で寄せられたメッセージの一部を紹介致します。

12>

[11988]エクセルマクロVBA「Web連携」DOMを使った解析_基礎

2020-04-28 10:13:22 受講生さんからの投稿です。

小川さん

お世話になっております。
本日は少し長いですが、よろしくお願いいたします。
DOMとして取得したレスポンスボディの文字化けに関する質問です。

以下のコードは本講座のエクセルテキストの01_WinHttp_基本の中にあるm01010_getモジュールのGetRequestSimple1()サブプロシージャです。

Sub GetRequestSimple1()
Dim url As String
url = “http://www.exvba.com/ws/dombasic.html"

Dim xh As New WinHttp.WinHttpRequest ‘HTTPリクエストを制御するクラスのインスタンスを生成
xh.Open “GET”, url, False
xh.send

Dim sCode As String
sCode = xh.Status
If sCode <> 200 Then ‘ステータスコードを調べる
MsgBox “リクエストに失敗しました” & vbNewLine & sCode
End If

‘まずは、レスポンスヘッダー、レスポンスボディをざっくり取得してみよう
Dim sHead As String
Dim sBody As String
sHead = xh.GetAllResponseHeaders
sBody = xh.ResponseText

Worksheets(“response”).Range(“B1”).Value = sHead
Worksheets(“response”).Range(“B2”).Value = sBody

‘レスポンスヘッダーの所定の項目を取得したいときは以下の要領
Debug.Print xh.GetResponseHeader(“Content-Length”)
End Sub

当然問題なく動いてレスポンスヘッダ、ボディともにちゃんと取れます。
しかし、対象のurlをShift_JISで記載されているページにしたら、とれてきたレスポンスボディの日本語部分が文字化けしていました。
そこで自分なりに調べて、
sBody = xh.ResponseText の部分を
→ sBody = StrConv(xh.ResponseBody, vbUnicode)  に変更したら
文字化けが解消しました。

ここまでだったらよかったのですが、次に、本講義テキストの02_WinHttp_DOM解析ファイルのm02010_get_DOMモジュールの
GetRequestSimple1()プロシージャを使って、上記と同じようにurlを
Shift_Jisで記載されているページにしたら、取得したレスポンスはやはり文字化けします。
しかし、こちらは自力では解決できませんでした。上記で解決したコードも試しましたが、よけい変な文字になってしまいました。
たとえば以下のようにしてみました。

本講義のテキストのコード
Sub GetRequestSimple1()
Dim url As String
url = “http://www.exvba.com/ws/dombasic.html"

Dim xh As New WinHttp.WinHttpRequest
xh.Open “GET”, url, False
xh.send

Dim sCode As String
sCode = xh.Status
If sCode <> 200 Then
MsgBox “リクエストに失敗しました” & vbNewLine & sCode
End If

‘htmlをDOMとして取得する。そのための変数を宣言。
Dim oHTml As New MSHTML.HTMLDocument
oHTml.body.innerHTML = xh.ResponseText ‘htmlボディーをDOMとして取得

‘所定のIDの要素を取得します
Dim oH1 As MSHTML.HTMLHeadElement
Set oH1 = oHTml.getElementById(“h1_01”)
Debug.Print oH1.outerHTML
Debug.Print oH1.innerHTML
Debug.Print oH1.innerText

‘所定の要素の次の要素を取得します
Debug.Print oH1.NextSibling.outerHTML
Debug.Print oH1.NextSibling.innerHTML
Debug.Print oH1.NextSibling.innerText

‘HTMLBody全体を取得します
Dim oH As MSHTML.HTMLBody
Set oH = oHTml.getElementsByTagName(“body”)(0)
Debug.Print oH.outerHTML
Debug.Print oH.innerHTML
Debug.Print oH.innerText

‘HtmlBodyの子要素のうち4番目のものを取得します
Debug.Print oH.ChildNodes(3).outerHTML
Debug.Print oH.ChildNodes(3).innerHTML
Debug.Print oH.ChildNodes(3).innerText

‘H2タグのついた要素すべてを順番に調べます
Dim oH2 As MSHTML.HTMLHeadElement
For Each oH2 In oHTml.getElementsByTagName(“h2”)
Debug.Print oH2.outerHTML
Debug.Print oH2.innerHTML
Debug.Print oH2.innerText
Next
End Sub

上記テキストコードの中で以下の部分を
‘HTMLBody全体を取得します
Dim oH As MSHTML.HTMLBody
Set oH = oHTml.getElementsByTagName(“body”)(0)
Debug.Print oH.outerHTML

変更後
‘HTMLBody全体を取得します
Dim oH As MSHTML.HTMLBody
Set oH = oHTml.getElementsByTagName(“body”)(0)
Debug.Print StrConv(oH.outerHTML, vbUnicode)

としましたが、余計、文字化けがひどくなってしまった例です。

根本的なところが分かっていないと思いますが、ご指導いただけますと幸いです。
よろしくお願いいたします。

[ 続きを読む ]  返信件数:5件  [ 動画を見る] 

[11878]エクセルマクロVBA「Web連携」POSTリクエスト

2020-04-13 05:44:48 受講生さんからの投稿です。

小川さん

お世話になっております。

何かを入力して送信する場合をポストリクエストと考えていいのでしょうか。
また、リクエストヘッダとボディ、レスポンスヘッダはどうやったら確認することができるのでしょうか。

よろしくお願いいたします。

[ 続きを読む ]  返信件数:7件  [ 動画を見る] 

[11828]エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得

2020-03-10 05:38:48 受講生さんからの投稿です。

小川さん

お世話になっております。

今回は、どうしても以下のコードでデバッグしてしまうので、そのご相談です。
Do While objIE.readyState <> READYSTATE_COMPLETE Or objIE.Busy = True
DoEvents
Loop

自宅で、やっているときは、まったく問題なく動きます。
しかし、職場でやると、オートメーションエラーとかでてきて、止まります。
職場でやりたいことは、職場の業務実績が記録されているサーバから必要なデータを取り出すことです。その業務関連の入力ページはIEで表示されます。予定表なども入力できます。外部にはつながっていません。
いったんそのIEを立ち上げれば、コンテンツそのものは取ってこれるようになりました。ただ、いちいち立ち上げてやるくらいなら、自分でクリックしたほうがましです。
いろいろ試しましたが、解決しません。
何が原因なのか、ご示唆いただけますと幸いです。

[ 続きを読む ]  返信件数:6件  [ 動画を見る] 

[11337]エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得

2019-04-12 00:19:21 ざきさんさんからの投稿です。

質問というか、動画をみていておかしな点があったので、指摘します。
動画24と動画23の内容が逆のような気がします。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11326]エクセルマクロVBA「Web連携」POSTリクエスト

2019-04-09 23:07:43 桜井さんからの投稿です。

小川先生

先日は下記の回答をありがとうございました。
少しずつですがコードを書き進めて、ダウンロードcsvを保存するという操作でソースを表示が選べず、立ち止まってしまいました。
先生ならどう調べられますでしょうか。よろしくお願いいたします。

[ 続きを読む ]  返信件数:2件  [ 動画を見る] 

[11313]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2019-04-03 13:24:33 ざきさんさんからの投稿です。

返信ありがとうございます。
アプリという表現が正しかったのかわかりませんが、サイト上で顧客管理をしています。ここでURLをさらしていいのかわからなかったので、添付ファイルにて、URLを送ります。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11310]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2019-04-03 09:46:45 ざきさんさんからの投稿です。

小川先生、おはようございます。
先日はロリポップのログインの件ありがとうございました。
無事に先に進むことができ、ロリポップ上に溜まったメール約50件から、顧客番号、氏名、電話番号を抜き取ることに成功しました。今までコピペで対応していたのが、馬鹿らしく感じます。

次のステップとして、仕事で使用しているクラウド型の顧客アプリにログインしたいのですが、IEでひらくと、添付ファイルのような画面になり、会社で使ってるFirefoxで開く画面と違い困っています。
IEでひらくと ctrl + Uを押してもソースコードでないので、分析しようがありません。

何か良い方法があったら教えてほしいです。
よろしくお願いします。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11309]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2019-04-03 05:14:07 副島 望さんからの投稿です。

小川慶一様:
Sub DomSample2()
' On Error Resume Next

Dim objIE As New InternetExplorer
objIE.Visible = True

Dim url As String
' url = "https://www.exvba.com/ws/domform.html?time=" & Format(Now, "yymmddhhnnss")
'???Q?l????ASSL??????????g??????B

url = "C:/Users/e0206/OneDrive/?f?X?N?g?b?v/hina.html"

'?e?X?g?y?[?W??AID?????????
objIE.navigate url

'?y?[?W??¥?????????
Do While objIE.ReadyState <> 4 Or objIE.Busy = True
DoEvents
Loop

上記マクロを実行すると、DO While のところで
オートメンションエラーが発生します。
自分のデスクトップ上のHTMLファイルをVBAで
開こうとするとエラーになるのでしょうか?

以上、宜しくお願い致します。

[ 続きを読む ]  返信件数:5件  [ 動画を見る] 

[11301]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2019-03-28 11:33:13 ざきさんさんからの投稿です。

小川先生、こんにちは。質問です。
仕事でロリポップWebメーラーにある情報を抜き取る作業をしたいのですが、ログインするところで躓いています。

https://tools.lolipop.jp/mail/

メールアドレスとメールパスワードの自動入力はなんとかマクロで作成できました。
しかし、どうやっても「ログイン」の画像をクリックして送信する方法がわかりません。
ちなみに、「Microsoft HTML Object Library」と「Microsoft Internet Controls」は参照済みです。作成したエクセルファイルを添付します。
アドバイスをお願いします。

[ 続きを読む ]  返信件数:2件  [ 動画を見る] 

[11296]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2019-03-26 09:49:07 受講生さんからの投稿です。

質問です。
「05_IE制御してコンテンツを取得.xls」ファイル中にある、マクロを実行したのですが、最初の数回は正常に実行できるのですが、繰り返すと「objIE.Visible = True」のところでプログラムがストップします。原因がわからず、困っています。「オートメーションエラー」と書いてあります。助けてください。

ちなみに、再起動して再度マクロを実行しても、同じ症状がでます。
回答よろしくおねがいします。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11281]エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_Cookie

2019-03-20 00:40:27 受講生さんからの投稿です。

質問です。
動画でクッキーを使ったリクエストのやり方とありますが、どういった場合にクッキーを使ったリクエストするのでしょうか?
クッキーを使ってリクエストをして解析することと、クッキーを使わないでリクエストをして解析する違いを教えてください。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[11239]エクセルマクロVBA「Web連携」POSTリクエスト

2019-03-10 21:10:02 桜井さんからの投稿です。

小川先生

こんにちは
IE上のログインボタンを押すという動作がうまくいきませんでした。
添付の先生の「送信ボタン」と
失敗している「ログイン」ボタンは、formの中の3番目にどちらも位置しているのですが
「ログイン」ボタンはelments(2)ではないのでしょうか。

よろしくおねがいいたします。

[ 続きを読む ]  返信件数:3件  [ 動画を見る] 

[10181]エクセルマクロVBA「Web連携」Microsoft Internet ControlsならではのWebコンテンツの取得

2018-06-30 12:26:08 田中 宏明さんからの投稿です。

IEを使わないという選択がベターだとは思いますが、ついIEを使ってしまう私のIE表示待ち時間処理をご紹介させていただきます。
(講座範疇外のため添削不要です。)

Public Sub Myloop(ByRef ie As Object)
    'IE表示完了の待ち合わせ 2018/6/30
    Dim IEretry   As Boolean: IEretry = False
    Dim RepeatSec As Single:  RepeatSec = Timer

On Error GoTo INVALID

    Do While ie.Busy = True Or ie.readyState < 4 'READYSTATE_COMPLETE
        DoEvents
'        Sleep 200  '200ms停止

        If (Timer - RepeatSec) > 80 Then
            Debug.Print ie.readyState
            MsgBox "サーバーが応答していません。インターネット接続をご確認後、再度実行してください。"
            ie.Quit
            End
        ElseIf (Timer - RepeatSec) > 40 And IEretry = False Then
            'IEの再読み込みは1回限りとする
            IEretry = True
            ie.Refresh
        End If
    Loop

    Do While ie.document.readyState <> "complete"
        DoEvents
'        Sleep 200  '200ms停止
        
        If (Timer - RepeatSec) > 100 Then
            Debug.Print ie.document.readyState
            ie.Quit
            MsgBox "ドキュメントを取得できません。インターネット接続をご確認後、再度実行してください。"
            End
        End If
    Loop

    '念のため確認
    DoEvents
    If ie.Busy = True Or ie.readyState < 4 Then
        Call Myloop(ie)  '再帰呼出
    End If
    
    Exit Sub

INVALID:

    Debug.Print "エラー番号:" & Err.Number & vbNewLine & "エラーの種類:" & Err.Description
    '実行時エラー「書き込みできません。」(70)は想定内なので無視。
    'それ以外はエラーを発生させる。
    If Err.Number <> 70 Then
        Err.Raise Err.Number
    Else
        On Error GoTo 0
        MsgBox "IE読み込み時にエラー発生。処理を継続します。"
    End If

End Sub 

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[10064]セッション解析と実装のサンプルデータ解説

2018-05-31 01:00:59 近藤さんからの投稿です。

一通り動画を見ました。体系的でわかりやすいです。
まだまだ理解が追い付いてませんが、たくさん動画をみて理解していきたいです。
エクセルでこれほど連携できるなんて本当にすごいと思ってます!!
色んな可能性を感じて、あれもできるんじゃないか、これもできるんじゃないかと楽しくワクワクしながらコードを書いています!

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[10038]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2018-05-23 12:23:46 受講生さんからの投稿です。

田中 宏明様

わざわざコメントありがとうございました。
やはり一筋縄ではいかないのですね。
参考ページを見ながら、
MSXMLやWinHttpRequestの検討もしつつ
研究してみます。
ありがとうございました。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[10014]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2018-05-21 13:37:46 受講生さんからの投稿です。

何度もすみません、
以下の件で、
.getElementsByClassName("nav-login-btn")を使ってみたところ、
要素の取得はできるようなのですが、クリックができませんでした。
.clickと書くだけではダメなのでしょうか。


また、それとは別の質問で、SWFコンテンツ?というのでしょうか、
以下のようなソースの場合、どのようにすればクリックできますでしょうか
getElementByIdではできませんでした。

<object type="application/x-shockwave-flash" id="MainExternalImport" name="MainExternalImport" align="middle" data="./swf/MainExternalImport_ver1_4.swf" width="105" height="23"><param name="quality" value="high"><param name="bgcolor" value="#ffffff"><param name="allowscriptaccess" value="sameDomain"><param name="allowfullscreen" value="true"></object>

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[10009]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2018-05-20 22:26:05 受講生さんからの投稿です。

(追記)
ちなみに、IDとパスワードを入力する部分にはIDがついていたのでgetElementByIdでの操作は成功済です。
ログインボタンだけがIDの記載がなかったので詰まってしまいました。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[10008]エクセルマクロVBA「Web連携」Microsoft Internet Controls_Webコンテンツの取得

2018-05-20 22:18:58 受講生さんからの投稿です。

IEで、IDとパスワードを入力してログインボタンを押す、
という操作をしたいのですが、
ログインボタンにはIDがついておらず、
getElementByIdでの操作ができそうにありません。
また、elementsでもないようで、エラーになってしまいました。

ソースは次のようなものでした。
<dd class="nav-login-btn"><a href="javascript:void(0);" onclick="javascript:func_request_Link('LOGIN'); return false;">ログイン</a></dd>


ネットで調べたところ、以下のようなコードが見つかり、
これでやったら無事にログインボタンが押されました。
この場合は、このような方法しかないでしょうか。

Dim ie As Object
Dim tag As Object
Set ie = CreateObject("InternetExplorer.Application")
ie.Visible = True
ie.navigate "http://目的のURL"
Do While ie.Busy Or (ie.ReadyState <> 4): DoEvents: Loop
For Each tag In ie.document.getElementsByTagName("a")
If tag.InnerText = "ログイン" Then
tag.Click
Exit For
End If
Next

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[10002]エクセルマクロVBA「Web連携」HTMLコンテンツの取得と解析_概要

2018-05-17 20:58:09 受講生さんからの投稿です。

本講座をマスターしたいド初心者です。

前編までは理解いたしましたが、本編は何が何だか全く理解できませんでした。

何のためにHTMLコンテンツを取得し、解析するのか。

そもそも、HLMLコンテンツ、ライブラリーとは一体何のことなのか。

この辺りですら全く分かりません。クグっても分からないです・・・。

ご教示のほどお願いします。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[10001]エクセルマクロVBA「Web連携」Cookieを使ったリクエスト

2018-05-17 18:56:02 受講生さんからの投稿です。

ヘッダーの表示・確認方法について質問します。

レスポンスボディーについては、【ページのソースを表示(Ctrl+U)】にて確認ができました。

一方、講義で出てきたヘッダー(例えば以下)ですが、どのようにしたら表示・確認をすることができますか?

>>[リクエストはこんな感じ↓]

GET /ws/cookiesample.php HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: ja-JP
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0; MALC)
UA-CPU: AMD64
Accept-Encoding: gzip, deflate
Host: www.exvba.com

Connection: Keep-Alive
- - -
>>[レスポンスはこんな感じ↓]

HTTP/1.1 200 OK
Date: Wed, 13 Jun 2012 05:26:36 GMT
Server: Apache
Set-Cookie: visitcount=1
Set-Cookie: accesstime=2012%2F06%2F13%2F+14%3A26%3A36
Content-Length: 227
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[9644]エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_Cookie

2018-03-30 13:25:28 ライスミルクさんからの投稿です。

Cookie面白いですね!

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[9642]エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_POSTリクエスト

2018-03-30 13:00:44 ライスミルクさんからの投稿です。

繰り返し見ましたが、理解追い付くのが大変でした。
すみません。
前半3:25のところで、
sp = "seminartitle=webrenkei&username=ogawa"
の結果が出力されていないようです。
 自分で実際にVBA入力して実行しても、同様の結果でした。
> <title>さん、ようこそ!</title>
> </head>
> <body>
> <h1>さん、ようこそ!</h1>
> <p>って、楽しいですね!</p>

 どのように修正すれば、良いでしょうか?
よろしくお願いします。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[9363]エクセルマクロVBA「Web連携」サーバとクライアント

2018-01-26 00:50:58 浦山大さんからの投稿です。

「サーバー、クライアントはなんとなく聞いたことがある」
本当にこんなレベルです^^;
マインドマップの左側位しか単語の意味がわかりませんでした。
説明頂いた内容を自分で図に起こしてみて、
・指示、リクエスト
・返す、コンテンツを提供、レスポンス
等と似たような意味の単語を纏めながら理解できました。

いつものように、するするーっと頭に入ってきます。
やる気も出ました。楽しみながら学びますm(_ _)m

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

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

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アップデートと関係があるのでしょうか?結構、時間がかかったアップデートだったので。

[ 続きを読む ]  返信件数:6件  [ 動画を見る] 

[9131]エクセルマクロVBA「Web連携」Microsoft WinHTTP Services 5.1_POSTリクエスト

2017-11-18 11:06:01 田中 宏明さんからの投稿です。

POSTリクエストを別のWebサイトで試し、ようやく成功できました。気分がいいいです。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[8746]エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例

2017-08-20 22:39:42 田中 宏明さんからの投稿です。

こんばんは。
ようやくMicrosoft XMLを少し使えるようになりました。
インターネットエクスプローラを起動して制御するほうが簡単ですが、こちらのほうが軽快に動作することが実感できました。
安定して動作するツールを制作できるレベルを目指していきます。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[5723]エクセルマクロVBA「Web連携」DOM(Document Object Model)を使った解析_概要

2016-02-07 17:03:44 伊久間博之さんからの投稿です。

こんにちは。いつもお世話になっております。

WinHttp Services 5.1を使ってとってきたDOMを使った解析についてわからないことがありますので質問させてください。
metaタグのコレクションが取得できません。


JR東日本から(http://www.jreast.co.jp/)から
metaタグを抜き出そうとして以下のコードを書きました。

Sub GetRequestSimple2()
    Dim url As String
    url = "http://www.jreast.co.jp/";

    Dim xh As New WinHttp.WinHttpRequest
    xh.Open "GET", url, False
    xh.send
    
    Dim sCode As String
    sCode = xh.Status
    If sCode <> 200 Then
        MsgBox "リクエストに失敗しました" & vbNewLine & sCode
    End If
    
    'htmlをDOMとして取得する。そのための変数を宣言。
    Dim oHTml As New MSHTML.HTMLDocument
    oHTml.body.innerHTML = xh.ResponseText 'htmlボディーをDOMとして取得
    
    Debug.Print xh.GetAllResponseHeaders
    Debug.Print oHTml.body.innerHTML 'xh.ResponseText
    Range("B1").Value = xh.GetAllResponseHeaders
    Range("B2").Value = oHTml.body.innerHTML ' xh.ResponseText
    
    Dim oM As MSHTML.HTMLHeadElement
    For Each oM In oHTml.getElementsByTagName("meta")
        Debug.Print oM.outerHTML
        Debug.Print oM.innerHTML
        Debug.Print oM.innerText
    Next
End Sub


が、取得できません。
Range("B2").Value をみると<body>以下が出力されていますので
oHTml.body.innerHTML = xh.ResponseText[\code]
の body を head にすればいいのではないかと予想して
oHTml.head.innerHTML = xh.ResponseText[\code]
としてみましたが、実行時エラー600になってしまいます。

調べてみるとInternet Controlsによる取得方法はいくつかあり、その方法を試したところmetaタグを取得することができました。

しかし、WinHTTP Services 5.1による取得方法を見つけられず、質問させて頂きました。

どのようにすればmetaタグ、headないの要素を取得することができるのでしょうか?

[ 続きを読む ]  返信件数:3件  [ 動画を見る] 

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

2016-02-02 14:46:09 古口梨絵さんからの投稿です。

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

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

[ 続きを読む ]  返信件数:6件  [ 動画を見る] 

[4743]エクセルマクロVBA「Web連携」リクエストとレスポンスとは

2015-07-26 17:37:34 受講生さんからの投稿です。

Get、Postリクエストの違いが初めて分かりました。

[ 続きを読む ]  返信件数:1件  [ 動画を見る] 

[4652]エクセルマクロVBA「Web連携」Microsoft XMLとDOMの活用例

2015-07-04 21:35:04 受講生さんからの投稿です。

小川さん

こんばんは。
YAHOOのトップページより「天気・災害トップ」の時間毎の天気・気温・湿度・降水量・風向・風速を
取得したいと考えております。
その途中で下記コード「「天気」の摘要・アドレスを抽出」の部分をうまく取得できない状況です。
どの部分に誤りがあるか教えていただけますか。
お手数をおかけしますが、よろしくお願いいたします。

 
Sub main()
'〇ライブラリの参照設定
'Microsoft XML, v3.0 かそれ以上のバージョン -> XML解析のため
'Microsoft HTML Object Library -> HTMLコンテンツの取得と、DOM解析のため

    'YAHOO!_JAPAN_画面へアクセス。
        Dim xh As New MSXML2.XMLHTTP
        Dim pElem As MSHTML.HTMLParaElement
        Dim hDoc As New MSHTML.HTMLDocument
        Dim e As MSHTML.HTMLHtmlElement
        
        xh.Open "GET", "http://www.yahoo.co.jp/"; & "?time=" & Format(Now, "yymmddhhnnss")
        xh.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        xh.send
        
        Do Until xh.readyState = 4
            DoEvents
            Debug.Print xh.readyState
        Loop
        
        If xh.Status <> 200 Then
            MsgBox "リクエストに失敗しました" & vbNewLine & xh.Status & ":" & xh.StatusText
        End If
    
    'レスポンスヘッダーをすべて出力
        'Debug.Print xh.GetAllResponseHeaders
    'レスポンスボディーを解析
        'Debug.Print xh.responseText 'htmlページをすべて出力してみよう
    '(YAHOO!_JAPANトップページの)「天気」のアドレスを抽出
        For Each pElem In hDoc.getElementsByClassName("cbysC13")
            Debug.Print pElem.href
        Next
    '(YAHOO!_JAPANトップページの)「天気」をクリック。
    '「176-0000」(東京都練馬区)を入力し、「検索」をクリック。
    '「市町村名」をクリック。
    '「時間」毎の天気・気温・湿度・降水量・風向・風速を抽出。

End Sub

[ 続きを読む ]  返信件数:2件  [ 動画を見る] 

12>

各講座ごとのメッセージを見る場合はこちら

 

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

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

トップへ