VBAからXMLを取得したくて方法を検索し、以下のコードで何とか取得ができました。
Sub httpRequest()
Dim HttpReq As MSXML2.XMLHTTP
Dim DomDoc As MSXML2.DOMDocument
Dim targetURL As String
targetURI = "http://www.drk7.jp/weather/xml/14.xml"
'HTTP GET
Set HttpReq = CreateObject("MSXML2.XMLHTTP")
HttpReq.Open "GET", targetURI, False
HttpReq.send (Null)
'XML PARSE
Set DomDoc = CreateObject("MSXML2.DOMDocument")
DomDoc.LoadXML (HttpReq.responseText)
dumpDomDoc DomDoc.ChildNodes
Set HttpReq = Nothing
Set DomDoc = Nothing
End Sub
Sub dumpDomDoc(objNode)
Dim obj
For Each obj In objNode
MsgBox obj.ParentNode.nodeName & " : " & obj.NodeValue
If obj.HasChildNodes Then
dumpDomDoc obj.ChildNodes
End If
Next
End Sub
このコードですと、読み込んだXMLを一行づつメッセージボックスに延々と表示するだけなのですが、
例えば行先のXMLファイルにある<description>と</description>に囲まれた部分だけを変数に格納するにはどのように記述すればよろしいのでしょうか?
ググってはみましたが知識不足の為、解説も理解できず困っております。
大変お手数ですがご教示いただけますようお願いします。
No.1ベストアンサー
- 回答日時:
スレ主さんのコードを元にちょこっと書き直してみました。
変数名、オブジェクト名等は適当ですが、動作確認はして
<description>の値が取れることは確認しました。
dumpDomDoc関数は不要だったので消しました。
■サンプル1
Sub httpRequest()
Dim HttpReq As MSXML2.XMLHTTP
Dim DomDoc As MSXML2.DOMDocument
Dim targetURL As String
Dim xmlNodeList As IXMLDOMNodeList ←追加
Dim value As String ←追加
targetURI = "http://www.drk7.jp/weather/xml/14.xml"
'HTTP GET
Set HttpReq = CreateObject("MSXML2.XMLHTTP")
HttpReq.Open "GET", targetURI, False
HttpReq.send (Null)
'XML PARSE
Set DomDoc = CreateObject("MSXML2.DOMDocument")
DomDoc.LoadXML (HttpReq.responseText)
Set xmlNodeList = DomDoc.selectNodes("weatherforecast/description") ←追加
value = xmlNodeList(0).Text ←追加
Set HttpReq = Nothing
Set DomDoc = Nothing
End Sub
またweatherforecastとdescriptionの指定を分けたい場合は、
■サンプル2
Sub httpRequest()
Dim HttpReq As MSXML2.XMLHTTP
Dim DomDoc As MSXML2.DOMDocument
Dim targetURL As String
Dim xmlNodeList1 As IXMLDOMNodeList ←追加
Dim xmlNodeList2 As IXMLDOMNodeList ←追加
Dim value As String ←追加
targetURI = "http://www.drk7.jp/weather/xml/14.xml"
'HTTP GET
Set HttpReq = CreateObject("MSXML2.XMLHTTP")
HttpReq.Open "GET", targetURI, False
HttpReq.send (Null)
'XML PARSE
Set DomDoc = CreateObject("MSXML2.DOMDocument")
DomDoc.LoadXML (HttpReq.responseText)
Set xmlNodeList1 = DomDoc.selectNodes("weatherforecast") ←追加
Set xmlNodeList2 = xmlNodeList1(0).selectNodes("description") ←追加
value = xmlNodeList2(0).Text ←追加
Set HttpReq = Nothing
Set DomDoc = Nothing
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ペンダントライトのコードの色...
-
Nullの使い方が不正です。
-
1日に1人がこなせるプログラム...
-
過剰なオブジェクト指向脳から...
-
2つのチェックボックスを制御
-
フィルターかけた後、重複を除...
-
エクセルで重複しない値を作成...
-
VB6.0 コンボBOXから...
-
画面上に拡張メタファイルを逐...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
RS-232の ボーレイト変更がで...
-
チャットGPT 4について質問があ...
-
VB2010にて、住基カードを使い...
-
欠番の抽出について
-
キー送信のコードにどうやって...
-
Excel VBA 空白をセルを探して...
-
JavaScriptの定数名が取り消し...
-
デザイナーにおすすめのJavaScr...
-
1、Rstudioで回帰直線を求める...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
JANコードとPOSコードは同じ?
-
access2003 クエリSQL文に...
-
1日に1人がこなせるプログラム...
-
オートフィルタで抽出結果に 罫...
-
変数名「cur」について
-
JavaScriptの定数名が取り消し...
-
ACCESSユニオンクエリでORDER B...
-
Exel VBA 別ブックから該当デ...
-
UWSCでMOUSEORG関数が上手く処...
-
COBOLの文法
-
PreviewKeyDownイベントが2回...
-
1、Rstudioで回帰直線を求める...
-
VBAでファイルオープン後にコー...
-
【VB6】実行ファイルとした後、...
-
Nullの使い方が不正です。
-
特定行の背景色を変えたいのですが
-
◾️Excel VBA 統合について Cons...
-
アルファベットに付いて質問し...
-
Excel VBAでOpenTextのFieldInf...
おすすめ情報