반응형

항상 엑셀로 데이터 관리하다보니 실제 xml 에 값이 없더라는

어이없는 경우가 발생


그럼? 펑션으로 해서 있는지를 체크하면되겠넹? ㅋㅋ


예시)AAA.xml 


<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<base>

<macro_name>

  <key>2</key>

  <text>으하하하</text>   

</macro_name>

<macro_name>

<key>3</key>

<text>우헤헤헤</text>

</macro_name>

</base>


셀에 2라는 값이 있을때 text 의 값을 얻어와보자


ALT+F11 키눌러서 vba 창에서 도구 -> 참조 에서 Microsoft XML, v3.0 을 활성화 먼저 한다.

(안그러면 xml 안읽히더라고...6.0도 있던데 되는지는 안해봄)






Function xmlfind(key) '함수처럼 사용하기 위해 이름 주고, 셀값 저장)


    Dim XmlDoc As DOMDocument: Dim blnXml As Boolean 'xml 문서형식 지정, 체크값


    Dim strFileName As String: strFileName = "AAA.xml" ' 파일명


    Dim strPath As String: strPath = "c:\"& strFileName 'strPath에 폴더위치와 파일명


    Dim strMsg As String: strMsg = strPath & "파일을 불러오다가 에러가 발생했습니다."


    Set XmlDoc = CreateObject("Microsoft.XMLDom") '오브젝트로 지정


    blnXml = XmlDoc.Load(strPath) '파일있는지 확인


    Dim i As Integer, j As Integer '반복을 위한 변수 설정

    If blnXml = True Then '파일읽었다면?


        With XmlDoc.ChildNodes(1) '문서 끝가지 반복

        For i = 0 To .ChildNodes.Length - 1 '첫번째 노드 key 의 끝까지 반복

            If key = .ChildNodes(i).ChildNodes(0).Text Then 'key 가 셀값과 같은가?

                xmlfind = .ChildNodes(i).ChildNodes(1).Text '해당 노드 값을 반환

                Exit For

            End If

        Next i

        End With

        Set XmlDoc = Nothing 'xml 껏졍

    Else

xmlfind =  strMsg & vbCrLf & Err.Number & " : " _

                   & Err.Description   '오류시 오류사항 리턴

    End If

End Function


언제나 느끼지만 나 이거 왜하고 있는거지....

반응형

+ Recent posts