Skip Navigation Links.
Expand VBAVBA
엑셀프로그래밍이 필요한 이유
Expand ExcelExcel
Expand External LibraryExternal Library
Expand SolutionSolution
Expand EssayEssay

External Datas - XML_04


엑셀시트의 데이타를 XML화일로 만들기_2

  • Microsoft.XMLDom
  • DomDocument
  • CreateElement|AppendChild|SetAttribute

지난 페이지에서 화일 I/O함수들을 이용하여
XML화일을 만들었었다..
I/O함수는 VB엔진에서 내장되어있는 것으로 가장 쉽게 접근하고
활용하는 것이지만..
프로그래머들은 계속 무언가 편리한 것을 만들어 내려고 노력하고
그래서 FileSystemObject라는 라이브러리를 만들어 놓기도 하고
VBA개발자들은 이것을 불러서 사용하기도 하는데
XML언어가 생기니 자연히 XML이 텍스트문서이기는 하지만
이것을 작성하고 읽어 들이고 하는 오브젝트를 또한 만들지 않을리가
없는 것이다
그것도 계속 버전업되어 개선되고..
그중의 하나인 라이브러리를 사용하여 엑셀화일의 데이타를
XML화일로 만들어 보도록 하자



이것 아니더라도 엑셀시트의 정보를 XML화일로 만드는 것은
얼마던지 간단한 일이지만..여기에서는 외부라이브러리를
활용 하는 테크닉의 연습으로
살펴보도록 한다

아래의 내용을 실행시켜 보시기 바란다
여기에서는
라이브러리를 참조하지 않은 상태의 Late Binding으로 아래와 같이 해본다

Sub writeXML() Dim oXMLDoc As Object Dim oRoot As Object Dim oChild As Object Dim oInstruct As Object Set oXMLDoc = CreateObject("Microsoft.XMLDOM") Set oRoot = oXMLDoc.createElement("Datas") oXMLDoc.appendChild oRoot Set oChild = oXMLDoc.createElement("SalesDate") oChild.Text = "xxx" oRoot.appendChild oChild Set oChild = oXMLDoc.createElement("Category") oChild.Text = "categroy" oRoot.appendChild oChild Set oChild = oXMLDoc.createElement("ProductName") oChild.Text = "productName" oRoot.appendChild oChild Set oInstruct = _ oXMLDoc.createProcessingInstruction("xml", "version='1.0'") oXMLDoc.insertBefore oInstruct, oXMLDoc.childNodes(0) oXMLDoc.Save ThisWorkbook.Path & "\myXml.xml" End Sub

간단하게 아래와 같은 XML문서가 만들어 짐을 볼수 있다



위의 내용은 중복되는 것이 많으니 별도의 프로시져를 만들어서
정리하는 것이 좋을 것이다
간단한 외부라이브러리의 오브젝트를 활용하여
지난 페이지의 것을 처리해보기로 하자
지난 페이지의 I/O함수보다 훨씬 간단하게
아래와 같이 만들어 질 것이다


<Data_1>... <Data_2>...

와 같은 표현방법보다는

<Data ID="1">... <Data ID="2">...

같은 표현이 바람직한 방법(Node의 속성,Attribute값으로 처리)일것이다
속성(Attribute)을 어떻게 처리하는지 보도록 하고
위의 구문을 별도의 섭프로시져를 추가하여 간결하게 해보자


xml_04.