すみません、いつも、いろいろな方に助けて頂いていますが、また、初歩的な質問をさせて頂きます。
Excel2007のVBAでXMLの扱いが良くわかっておりません。
以下のプログラムで複数ItemのASINを出力したいのですが、うまくいきません。
XMLがきちんと取得できているのはWireSharkでキャプチャして確認できております。
VBAで表示出力するのがうまくいきません。ご教授方よろしくお願いします。
selectSingleNodeで一つの場合はうまく取り出せています。複数ノードの場合にSelectNodesの使い方に問題がありますでしょうか?
型の宣言などに誤りがありますでしょうか?
また、基本的なことですが、MSXML2を使おうとしたら、Excel2007で使えませんでした。
XMLDOMは、サポート切れ?で古いので、MSXML2を使うのが良いとWebで見ました。
DLLなどが必要な気がしているのですが、よくわかっていないのでご教授頂きたいです。
すみませんが、よろしくお願いします。
*****VBAプログラム(抜粋)******
Dim xml As Object, xmlItems As Object, objPrice As Object
'XML オブジェクト作成
Set xml = CreateObject("Microsoft.XMLDOM")
xml.async = False
xml.Load URI
Set xmlItems = xml.SelectNodes("ItemLookupResponse/Items/Item")
For Each objPrice In xmlItems
' ASIN
If Not objPrice.SelectSingleNode("ASIN") Is Nothing Then
curWS.Cells(rowIndex, ASINCol) = objPrice.SelectSingleNode("ASIN").text
End If
Next
*****取得したXML(抜粋)******
<ItemSearchResponse >
<Items>
<Item>
<ASIN>111</ASIN>
</Item>
<Item>
<ASIN>222</ASIN>
</Item>
<Item>
<ASIN>333</ASIN>
</Item>
</Items>
</ItemSearchResponse>
No.1ベストアンサー
- 回答日時:
とりあえず下記で111,222,333が取得できました。
ご参考まで。当方、Windows7Home64bit/xl2010です。
環境は異なりますが、MSXML3あたりでも動くコードだと思います。
コード中XPATHはItemLookupResponseなのに、テストデータの方はItemSearchResponseになっていますが大丈夫ですか?
'MSXML6に参照設定
Sub test()
Dim XML As New MSXML2.DOMDocument60
Dim xmlItems As IXMLDOMNodeList
Dim objPrice As IXMLDOMNode
XML.async = False
' XML.validateOnParse = False
' XML.resolveExternals = False
' XML.preserveWhiteSpace = True
XML.Load GetDesktopPath & "\test.xml" 'お示しのデータをコピペして保存
Set xmlItems = XML.SelectNodes("ItemSearchResponse/Items/Item")
For Each objPrice In xmlItems
' ASIN
If Not objPrice.SelectSingleNode("ASIN") Is Nothing Then
Debug.Print objPrice.SelectSingleNode("ASIN").Text
End If
Next
'直接ASINまで指定しても良いと思うが...
' Set xmlItems = XML.SelectNodes("ItemSearchResponse/Items/Item/ASIN")
' If xmlItems.Length > 0 Then
' For Each objPrice In xmlItems
' Debug.Print objPrice.Text
' Next
' End If
Set XML = Nothing
End Sub
Private Function GetDesktopPath() As String
Dim wScriptHost As Object, strInitDir As String
Set wScriptHost = CreateObject("Wscript.Shell")
GetDesktopPath = wScriptHost.SpecialFolders("Desktop")
Set wScriptHost = Nothing
End Function
プログラムまで記載頂きありがとうございました。SelectNodesの考え方はあっているようですね。
参考になりました。根本的に何かができていないようですので、頂いたプログラムで勉強します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
ロボットの住む世界で流行ってる罰ゲームとは?
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
VBA でxmlの全要素・属性の読み込み
Visual Basic(VBA)
-
vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業)
Visual Basic(VBA)
-
vbaでxmlからNodeListでデータがない時、空欄で取得する方法
Visual Basic(VBA)
-
-
4
VBAでXML文書のある特定タグ以下の内容をそのまま取得したい
XML
-
5
あるノードリストに、特定の名前のノードが存在するかどうか調べたい
XML
-
6
XMLをエクセルに取り込むマクロ
Visual Basic(VBA)
-
7
XMLからデータを取得
Visual Basic(VBA)
-
8
ExcelのVBAで、XMLファイルのデータ抽出
Excel(エクセル)
-
9
XML文書の指定した属性値を持つノードを取得したい
XML
-
10
Access VBAで行ラベルが定義されていないというエラーが出ます
Access(アクセス)
-
11
同じタグ名の項目取得
XML
-
12
VB2005でXMLデータから複数ある要素の入れ子を取得する方法
Visual Basic(VBA)
-
13
Access VBAでXMLが読み込めない
Visual Basic(VBA)
-
14
XPathで途中に名前空間が設定されていると狙った要素を指定できない
XML
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
妥当なXML文書
-
XSLTで固定長データファイルを...
-
CPUの考え方を教えてください ...
-
SNMP リンクダウンとノードダ...
-
ルート要素ノードが2個ある場合?
-
XPathで途中に名前空間が設定さ...
-
ASP.NETでツリービューを作成し...
-
■XSLT■固定文字を使ったループ...
-
VBでXMLファイルを作ると xmlns...
-
特殊記号が勝手にエスケープさ...
-
XMLで要素が記述された順番に意...
-
下から○番目のデータを表示は可...
-
UTF8への変換について
-
MagpieRSSを使用して自分のHPに...
-
XML、XSLTの適応エラー(IEから...
-
eclipseへのxmlファイル追加
-
同じタグ名の項目取得
-
XSLTでの正規表現判定
-
JavaScriptとの連携について学...
-
名前空間の宣言の書き方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel-VBAでXMLの複数ノードの...
-
VBSでxmlの値を書き換えたい
-
エラーメッセジの意味が分かり...
-
XMLのタグ名に予約語は禁止?
-
RSSファイルの拡張子はどれが正...
-
TOMCAT起動エラー
-
mac 10.9.3に英辞郎を導入する
-
ANTのbuild.xmlに日本語コメン...
-
XML同じ名前の要素を自動で集約...
-
XMLからデータを取得
-
DOMで\\\\localhost\\~がload...
-
php xml 読み込んで 一部のみ...
-
XMLの名前空間について
-
robots.txtの設置場所
-
VB2005による旧形式の対応について
-
XMLファイルをPHPで読み込むには?
-
CPUの考え方を教えてください ...
-
東芝のDynabookなのですがアン...
-
XMLで要素が記述された順番に意...
-
SNMP リンクダウンとノードダ...
おすすめ情報