항상 엑셀로 데이터 관리하다보니 실제 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
언제나 느끼지만 나 이거 왜하고 있는거지....