Vba 如何从XML标记到Excel工作表中获取值?

Vba 如何从XML标记到Excel工作表中获取值?,vba,excel,Vba,Excel,我在vba编码方面缺乏经验,需要将xml文件中的值提取到excel工作表中。试图在谷歌的帮助下编写代码,但没有成功。下面是我的xml文件 <CRD> .. <PLAN>Plan01</PLAN> .. </CRD> 代码2 Sub ImportXMLtoList() Dim xml_doc As New MSXML2.DOMDocument60 Dim onode As MSXML2.IXMLDOMElement Dim chnode As M

我在vba编码方面缺乏经验,需要将xml文件中的值提取到excel工作表中。试图在谷歌的帮助下编写代码,但没有成功。下面是我的xml文件

<CRD>
..
<PLAN>Plan01</PLAN>
..
</CRD>
代码2

Sub ImportXMLtoList()

Dim xml_doc As New MSXML2.DOMDocument60
Dim onode As MSXML2.IXMLDOMElement
Dim chnode As MSXML2.IXMLDOMElement
Dim brtn As Boolean

brtn = xml_doc.Load("D:\Satheesh 244688\CI Team\Med D Formulary Testing\May 8th\CRD-0071709[1].xml")

'Set onode = xml_doc.SelectSingleNode("/CRD")

For Each onode In xml_doc.SelectSingleNode("//CRD")

nm = onode.nodeName
If nm = "RxPlanID" Then
Sheet1.Cells(2, 2) = chnode.Text
End If

Next

End Sub

不清楚您将使用的xml是否如上所述,或者是否将在多个节点之间循环

使用下面的xml

<Root>
<Row>
<Name>John</Name>
</Row>
<Row>
<Name>Anne</Name>
</Row>
</Root>

约翰
安妮
这是vba

Sub GetXML()
    Dim myXML As Object
    Dim myNodes As Object
    Dim myNode As Object
    Dim myRow As Integer

    'Create xml object
    Set myXML = CreateObject("MSXML2.DOMDocument.6.0")

    myXML.Load "c:\data.xml"     'Change for your file path

    'Check if valid XML
    If myXML.parseError <> 0 Then
        'Parse error, so show message
        MsgBox "Something went wrong loading XML!" & vbCrLf & vbCrLf & myXML.parseError.reason
        Exit Sub
    End If

    Set myNodes = myXML.SelectNodes("//Row")
    myRow = 1
    For Each myNode In myNodes
        Sheet1.Cells(myRow, 1) = myNode.SelectSingleNode("Name").Text
        myRow = myRow + 1
    Next myNode


End Sub
Sub-GetXML()
Dim myXML作为对象
将myNodes设置为对象
将myNode设置为对象
将myRow设置为整数
'创建xml对象
设置myXML=CreateObject(“MSXML2.DOMDocument.6.0”)
加载文件路径的“c:\data.xml”更改
'检查XML是否有效
如果myXML.parseError为0,则
'分析错误,因此显示消息
MsgBox“加载XML时出错!”&vbCrLf&vbCrLf&myXML.parseError.reason
出口接头
如果结束
设置myNodes=myXML.SelectNodes(//行)
myRow=1
对于myNodes中的每个myNode
Sheet1.单元格(myRow,1)=myNode.选择SingleNode(“名称”).文本
myRow=myRow+1
下一个myNode
端接头
将“John”和“Anne”分别放在表格1的A1和A2单元格中

Sub GetXML()
    Dim myXML As Object
    Dim myNodes As Object
    Dim myNode As Object
    Dim myRow As Integer

    'Create xml object
    Set myXML = CreateObject("MSXML2.DOMDocument.6.0")

    myXML.Load "c:\data.xml"     'Change for your file path

    'Check if valid XML
    If myXML.parseError <> 0 Then
        'Parse error, so show message
        MsgBox "Something went wrong loading XML!" & vbCrLf & vbCrLf & myXML.parseError.reason
        Exit Sub
    End If

    Set myNodes = myXML.SelectNodes("//Row")
    myRow = 1
    For Each myNode In myNodes
        Sheet1.Cells(myRow, 1) = myNode.SelectSingleNode("Name").Text
        myRow = myRow + 1
    Next myNode


End Sub