
すみません、いつも、いろいろな方に助けて頂いていますが、また、初歩的な質問をさせて頂きます。
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も見ています
-
VBA でxmlの全要素・属性の読み込み
Visual Basic(VBA)
-
VBAでXMLを出力するプログラムを作成する際の名前空間接頭辞の付与の仕方について
Visual Basic(VBA)
-
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
-
4
vbaでxmlからNodeListでデータがない時、空欄で取得する方法
Visual Basic(VBA)
-
5
郵便番号検索APIにてget ElementByTagNameでうまくを取得できない
Visual Basic(VBA)
-
6
VB2005でXMLデータから複数ある要素の入れ子を取得する方法
Visual Basic(VBA)
-
7
あるノードリストに、特定の名前のノードが存在するかどうか調べたい
XML
-
8
XMLをエクセルに取り込むマクロ
Visual Basic(VBA)
-
9
XPathで途中に名前空間が設定されていると狙った要素を指定できない
XML
-
10
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
11
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
12
XMLファイルのattribute値がうまく取得できません。。
Microsoft ASP
-
13
xmlファイル内の文字列置換
Visual Basic(VBA)
-
14
excel vbaでのxml出力がわかりません
Visual Basic(VBA)
-
15
VBAでワークシートを引数としてサンプル関数に渡したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
vba textboxへの入力について教...
-
VBA 入力箇所指定方法
-
VBAでCOPYを繰り返すと、処理が...
-
Vba セルの4辺について罫線が有...
-
VBAでセルの書式を変えずに文字...
-
vbsでのwebフォームへの入力制限?
-
複数のExcelファイルをマージす...
-
【マクロ】並び替えの範囲が、...
-
VBA ユーザーフォーム ボタンク...
-
vb.net(vs2022)のtextboxのデザ...
-
【VBA】値を変更しながら連続で...
-
vbaにてseleniumを使用したedge...
-
【マクロ】シートの変数へ入れ...
-
【マクロ】開いているブックの...
-
エクセルのマクロについて教え...
-
エクセルのVBAコードについて教...
-
算術演算子「¥」の意味について
-
VBAでユーザーフォームを指定回...
-
VB.net 文字列から日付型へ変更...
-
[VB.net] ボタン(Flat)のEnable...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel-VBAでXMLの複数ノードの...
-
VBSでxmlの値を書き換えたい
-
XML同じ名前の要素を自動で集約...
-
サイトマップの作り方。
-
RSSファイルの拡張子はどれが正...
-
DOMで\\\\localhost\\~がload...
-
エラーメッセジの意味が分かり...
-
googleのxmlサイトマップについて
-
TOMCAT起動エラー
-
XMLからデータを取得
-
xmlから\\t文字を取得する
-
YAHOOオークションAPI ...
-
C#のDataGridViewにCheckBox
-
WordPressサイトマップ
-
VB2005による旧形式の対応について
-
XMLファイルをPHPで読み込むには?
-
tumblrのxmlをsimplexml_load_f...
-
encoding="unicode"について
-
php xml 読み込んで 一部のみ...
-
CPUの考え方を教えてください ...
おすすめ情報