나눔터  
  HOME > 나눔터 > 묻고답하기 > 엑셀
엑셀
엑셀에 대한 질문과 답변을 올려주세요. 단, 취지에 맞지 않는 글은 운영자가 삭제합니다.
 "000 님, 도와주세요", "부탁 드립니다.", "급합니다!" 등과 같이 막연한 제목을 달지 말아주세요.
[필독] 빠르고 정확한 답변을 얻는 16가지 Tip !
[필독] 저작권법 개정에 따른 이용안내

작성자:  

 개발어려워요 (tsy90)

추천:  2
파일:     조회:  1721
제목:   xml 파싱하는 함수가 있나요?
     
  * 답변하시는 분들께 도움이 되도록 자신의 환경을 아래 항목 옆에 기재해 주세요.

 - 엑셀 버전(95,97,2000,xp,2003,2007):

* 아래줄에 질문을 작성하세요 >> 2013

웹서비스 호출하여서 xml 형태로 가져오기까지 했는데 간단하게 parsing할 방법이 없을까요..?? 소스는 이렇습니다.

Public Sub TestResultsXml()
    Dim sEnv As String
    Dim xmlhtp As New XMLHTTP60
    Dim xmlDoc As New DOMDocument60
    Dim Node As IXMLDOMNode
    Dim childNode As IXMLDOMNode
    Dim NodeList As IXMLDOMNodeList
    Dim Ans1 As String
    Dim Ans2 As String
    Dim attr As IXMLDOMAttribute
    
    sEnv = "<?xml version=""1.0"" encoding=""utf-8""?>" _
        & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance""" _
        & " xmlns:xsd=""http://www.w3.org/2001/XMLSchema""" _
        & " xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" _
        & "<soap:Body><GetCustinfoStringXML xmlns=""http://tempuri.org/"" />" _
        & "</soap:Body></soap:Envelope>"
    With xmlhtp
        .Open "post", "http://localhost:59404/WebService1.asmx?op=GetCustinfoStringXML", False
        .SetRequestHeader "Host", "http://localhost:59404/WebService1.asmx"
        .SetRequestHeader "Content-Type", "text/xml; charset=utf-8"
        .SetRequestHeader "SoapAction", "http://tempuri.org/GetCustinfoStringXML"
        .SetRequestHeader "Accept-encoding", "zip"
        .send (sEnv)
        xmlDoc.LoadXML .responseText
    End With
    
    Set NodeList = xmlDoc.ChildNodes(1).ChildNodes(0).ChildNodes(0).ChildNodes(0).ChildNodes
    'Debug.Print "" & NodeList(0).nodeTypedValue
    'Debug.Print "NodeList = " & NodeList(1).nodeTypedValue
    
    Ans1 = NodeList(0).nodeTypedValue
    Debug.Print "" & Ans1; ""
    
    
    ' 이방법 말고 다른 방법을 찾거나.. FOR문 돌려서 SHEET에 뿌리지게끔 수정해야 할듯..
    Worksheets("Sheet1").Select
    Range("A2").Value = Split(Split(Ans1, "<ROW_ID>")(1), "</ROW_ID>")(0)
    Range("B2").Value = Split(Split(Ans1, "<CUST_NM>")(1), "</CUST_NM>")(0)
    Range("C2").Value = Split(Split(Ans1, "<IDENTITY_NO>")(1), "</IDENTITY_NO>")(0)
    Range("D2").Value = Split(Split(Ans1, "<TEL>")(1), "</TEL>")(0)
    
End Sub

아래 split을 써서 나오게는 테스트 해봤는데 여러개의 데이터를 뿌려야 하는데.. 뭔가 더 쉽고 간단한 방법이 없을지 여쭤봅니다.
 
[불량 게시물 신고]  
        
  

작성일 : 2019-07-17(10:32)
최종수정일 : 2019-07-17(10:32)