2011-05-15 5 views
2

VBA를 통해 일반 XML 파일을 구문 분석하려고합니다. XML 노드의 값을 추출하여 XML 파일에 쓰고 내보내십시오.VBA Excel 2003에서 XML을 구문 분석하는 방법은 무엇입니까?

내가 이해할 수있는 문서로 처리하기 위해 한 번에 하나의 노드를 읽을 수있는 라이브러리를 알고 있습니까?

지금까지 다음 Dim 문에서 인수와 함께, 당신은하지 인스턴스가 그런 식으로 VBA의 개체 수

:

Sub Go() 

    Dim xmlDoc As MSXML2.DOMDocument 
    Dim xmlElement As MSXML2.IXMLDOMElement 
    Dim xmlNode As MSXML2.IXMLDOMElement 

    Set xmlDoc = New MSXML2.DOMDocument 
    xmlDoc.Load ("E:\cdCatalog.xml") 

    Set xmlElement = xmlDoc.documentElement 
    Set xmlNode = xmlElement.FirstChild 

    parseNodes xmlElement, 1, 1 
    'parseNodes xmlNode, 1, 1 

End Sub 

Sub parseNodes(node As MSXML2.IXMLDOMElement, i As Integer, j As Integer) 
    Dim child As MSXML2.IXMLDOMNode 

    'result = node.baseName & " : " & node.Text 
    result = node.nodeName 

    Sheet1.Activate 
    ' text if... 
    Cells(i, j) = result 

    j = j + 1 
    If (node.hasChildNodes) Then 

     For Each child In node.childNodes 
      i = i + 1 
      'MsgBox child.Text 
      MsgBox TypeName(node.childNodes) 
      parseNodes child, i, j 
     Next 
    End If 

End Sub 
+0

이 도움이 될 수 있습니다 http://stackoverflow.com/questions/11305/how-to-parse-xml-in-vba을 그렇게 해봤 우리는 당신이 그것을 해결하는 데 도움 수있는 우리를보기 –

+0

. 다른 유형의 "VBA DOM XML tutorial"을 좋아하는 검색 엔진에 입력하십시오. –

+0

질문을 수정했습니다. "Dim gReader As New XmlTextReader (FileName)"가 오류인지 이해하기 위해 고심하고 있습니다. 감사. –

답변

4

은 당신의 코멘트에 명시된 바와 같이 업데이트 된 질문을 해결. 시도 : 또한

Dim gReader As XmlTextReader 
gReader = New XmlTextReader 

을, 당신이 여기 XmlTextReader 문서를 읽으십시오 : XmlTextReader을 사용하는 방법을

http://msdn.microsoft.com/en-us/library/1af7xa52.aspx

의 예를 보여줍니다.

EDIT : 내가 막론한 인터넷 검색에서 알 수있는 한, XmlTextReader은 .NET 용으로 구현되었지만 VBA 용으로는 구현되지 않았습니다.

DOM을 XmlTextReader 대신 사용하는 것이 좋습니다. DOM을 비교적 쉽게 사용할 수 있습니다. 단점은 매우 큰 XML 파일에는 비효율적이라는 것입니다. 대용량 파일을 조작하지 않는 한 DOM은 잘 작동합니다.

Dim xlmDoc As Object 
Set xlmDoc = CreateObject("Msxml2.DOMDocument.6.0") 
xmlDoc.Load fileName 
+0

그래서 .. 우선 .. 도와 줘서 고마워. 하지만 XmlTextReader를 사용할 수 없습니다. 어쩌면 나는 너무 멍청하다. 그러나 그것은 (나를 위해) 효과가 없다. 지금까지 내 코드를 업데이트했습니다 .. 이제 참조 불일치가 :( –

관련 문제