XMLファイルからすべてのP要素を取得するコードが作れなくて困っています。
本当は特定のデータが欲しいのですが、諸事情により本来必要なデータ位置の特定の方法が難しいため、
一旦すべてのP要素を取得して後で指定の列を残して他を削除するという方法を取ろうと思っています。
ただ、XMLファイルからすべてのP要素を取得するコードが作れなくて困っています。
Ubound(tmp)の数が増えていかない=Splitの使い方の問題だと思いますが、
今の私の知識では理解が足りません。
どなたかアドバイスいただけますと助かります。
よろしくお願いします。
Sub xml_parse(ByVal xmlpath As String)
'Microsoft XML v6.0 を参照設定
Dim XMLDocument As MSXML2.DOMDocument60
Dim pElem As MSHTML.HTMLParaElement
'Dim Doc As New XMLDocument Dim e As MSHTML.HTMLHtmlElement Dim ws1 As Worksheet Set ws1 = Worksheets("データ一覧") 'MSXMLオブジェクトを生成し、xmlファイルをロード Set XMLDocument = New MSXML2.DOMDocument60 'async = False → 読み込み終了後、次の処理をします(同期処理) 'async = true →だと、読み込みが終わらなくても、次のステップへ(非同期処理) 'VBAは非同期処理に対応していないので、async = Falseとします XMLDocument.async = False Dim strMsg As String Dim i, cmax As Long cmax = ws1.Range("A1048576").End(xlUp).Row 'Doc.Load (xmlpath) XMLDocument.Load (xmlpath)
If (XMLDocument.parseError.ErrorCode <> 0) Then 'ロード失敗
strMsg = XMLDocument.parseError.reason 'エラー内容を出力
MsgBox "ロードに失敗しました・・・" & vbCrLf & vbCrLf & strMsg, vbCritical
Exit Sub
End If
'-困っているのはここから下---------------------------------------------------------------
ws1.Range("A" & cmax + 1).Value = cmax Dim objxml As Object For Each objxml In XMLDocument.getElementsByTagName("P") Dim tmp As Variant tmp = Split(objxml.Text, "<P>") For i = 0 To UBound(tmp): Debug.Print tmp(i) ws1.Cells(cmax + 1, i + 2) = tmp(i)
' tmp = Null
Next Next
End sub
回答1件
あなたの回答
tips
プレビュー