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

External Datas - XML_01


XML 언어란??

  • EXtensible Markup Language|XML
  • Transport and store data|정보의 전달과 보관
  • Important to know, and very easy to learn|알아야하고,배우기 쉽고

XML이란 무엇일까??
XML은 eXtensible Markup Language의 약자이다
Mark up은 무엇을 표시한다는 그런 의미다
여러분이 보는 웹페이지도 하나의 Mark Up 언어이다
웹페이지를 가장 빠르게 네트워크상에서 오고가게 하기 위하여서는
텍스트문서가 가장 빠르게 오고 갈수 있다
그런데 그냥 텍스트문서를 오고가게 하여서는 여러분이 보는
웹페이지 같이 화려하게 표현을 할수 없는 것이다
텍스트문서를 오고 가게 할때 어떤 문자열정보에 표시(Mark up)을
하여 주면 여러분이 갖고 있는 웹브라우져가 어떤 표시일경우에는
어떻게 여러분의 컴퓨터속의 윈도우 자원을 활용하여
빨갛게도 표시하고 파랗게도 표시하게 되는 것이다
예를 들어서

<H1>This is test</H1>

라고 하면

<H1></H1>

이라는 서로 약속된 꼬리표(TAG)를 이해하여

This is test

이라는 폰트사이즈가 약속된 대로 써지고.. 또 아래와 같이 표현하면 ..

<UL> <LI>EXCEL</LI> <LI>WORD</LI> <LI>ACCESS</LI> </UL>

와 같이 각각 나타내고 싶은 문자열정보에 꼬리표를 표시하여

  • EXCEL
  • WORD
  • ACCESS

와 같이 웹페이지에 표현되는 것이다

정보는 좀더 빠르게 전달하고 표현하고 싶은 것은 표현하고..
보내는 쪽에서 [어떤 표시를 해서] 보낼테니 [표시대로 처리]해주게!!!
그래서 HTML이 먼저 표시되는 언어를 시작하고
뒤따라서 그런 형식을 단순히 정보만 체계적으로
원활하게 주고 받을 방법을 생각하다 보니 XML언어라고 하는 것이
나타나게 된것이다
HTML문은 서식정보+순수한 데이타가 짬뽕이 되어 있는 형식이다
그러다 보니..
서식정보와 순수한 데이타를 분리하고 싶은 생각도 들고..
그런 생각들이 순수한 데이타만 처리하는 문서 XML을
생각하게 되고 ..
그냥 단순히 정보를 주고 받기 보다는
엑셀에서 받은 정보를 처리하던
전화기에서 받은 정보를 처리하던
어떤 다른 정보기기에서 정보를 받아서 처리하던
만국공통의 표시를 지향하여 만들도록 하자!!!
그것이 XML인 것이다
그러니 정보를 가벼운 텍스트문서로 작성하여 주고 받되
정보를 체계적으로 구조적으로 안정되게 표시를 하여 주고 받자!!
라는 생각에서 시작되는 것이다

예를 들어서 어떤 패스트후드점에 주문을 날릴때
이름은 햄버거고 사이즈는 얼마짜리고 주문 받은 시간은 몇시몇분이고
주문받은 직원은 누구이고 주문 한 사람의 주소는 어떻고..
라는 정보가 주문을 받는 순간 발생하게 된다
이것을 가볍게 정리한다면..
가장 빠른 방법은 위와 같이 문자열정보(텍스트정보)로
정리하면 되는데 문장이 장황하다..뭔가 정리정돈이 되지 않았다
하나의 XML문서로 작성한다면 아래와 같이 될것이다

<?xml version="1.0"?> <orders> <order> <customer>서울XX아파트100동15호</customer> <phone>111-1111</phone> <employee>홍길동</employee> <product>햄버거-A</product> <time>2009-07-07 14:30:00</time> </order> <order> <customer>서울YY아파트10동1호</customer> <phone>222-2222</phone> <employee>일지매</employee> <product>새우버거-A</product> <time>2009-07-07 16:30:00</time> </order> </orders>

와 같이 표현하면 같은 문자열정보라 하여도 서로 주고 받을때
이해하기 좋게 정리정돈이 되지 않았는가??
이렇게 정보단위에 표시(TAG..꼬리표)를 붙여 놓으면...
정보를 최소단위로 토막을 쳐서
어떤 정해진 형식의 표시를 하면 주고 받기에 편리한 것이다
실은

서울XX아파트100동15호|111-1111|홍길동|햄버거-A|2009-07-07 14:30:00
서울YY아파트10동1호|222-2222|일지매|새우버거-A|2009-07-07 16:30:00

와 같이 | 로 구분하여 표현하여도 될것이다
그리고 I/O함수를 이용하여 이 텍스트문서를 적절히 읽어내면 될수도 있지 않을까??
오래전에는 컴퓨터가 발달하지 않았을때는 당연히 위와 같이
표현하고 주고 받았지만..
사람은 체계적..합리적인 방법으로 끝없이 지향하는지라..
많은 사람들이 공통적으로 받아들이는 방법이 아니였으니..
무언가 전세계가 공통으로 이해하는 문자열정보를 체계적으로
주고 받을 형식이 필요하지 않을까???하는 컨셉에서
XML이 만들어지게 된 것이다

위의 XML문을 텍스트편집기에 복사하여 붙여 넣고
적당한 화일명.xml이라고 한후 저장하고 열면
아래그림과 같이 에러가 난다



모두 영문이면 에러가 안나는데 한글이 섞여서 에러가 난다
아래와 같이 하면 정상적으로 열린다

<?xml version="1.0" encoding="EUC-KR" ?> <orders> <order> <customer>서울XX아파트100동15호</customer> <phone>111-1111</phone> <employee>홍길동</employee> <product>햄버거-A</product> <time>2009-07-07 14:30:00</time> </order> <order> <customer>서울YY아파트10동1호</customer> <phone>222-2222</phone> <employee>일지매</employee> <product>새우버거-A</product> <time>2009-07-07 16:30:00</time> </order> </orders>

와 같이 encoding="EUC-KR"이라는 속성을 추가 시켜주어야 한다
이화일을 다블크릭하면 웹브라우저가 열린다..
웹브라우져에게 한글 들어가니까..한글 해석기를 가동시켜라!!
라는 표시의 속성이 encoding="EUC-KR" 인것이다
그러면 위의 내용이 웹브라우져에 아래와 같이 나타날것이다



이것이 무슨 이야기냐 하면..
웹브라우저라는 프로그램이 XML문을 이해한다는 이야기다..
이런 식으로 정보를 XML문이라는 세계공통의 표현방법을 만들어 놓으면
정보상호간에 정보의 주고 받음이 편리해 진다는 이야기다..
뭔소린지..감을 못잡으시기 바라며..최대한 문짜 쓰지 않고??!!!
쉽고 무식(?)한 화법으로 하니 이해하기 쉬울것이다
그럼 이제 위의 화일을 엑셀에서 열어 보면 될 것이다

XML문이 뭐 필요할까??
그런데 2003번전과는 달리 2007버전부터는 엑셀자체를 XML문서와
궁합이 맞아 돌아가게 되어..
반드시 엑셀프로그램을 한다면 알아야 할 부분이 되었다
워크샵에서 진행하려는 2007메뉴관련강좌를 이곳에서
우선 XML의 기초를 잡고 가는 것이 좋을 것 같아서
이 페이지를 시작한다

우선위의 두번째 XML문을 복사하여 텍스트편집기에 붙여 넣고 test.xml이라고
하여 저장한후 2003버전이상에서 열면 된다
그림의 순서대로 xml화일을 연다
아래 그림은 2007버전으로 연것이지만 2003도 마찬가지다
물론 인터페이스는 약간 틀리지만
2003버전을 갖고 계신분도 같은 요령으로 하면 된다



위의 그림에서 테이블로 열기로 옵션을 실행하면
스키마(schema)화일이 없으니 자동으로 만들겠냐는
대화상자가 나타나고 확인하면 자동으로 스키마를 만들고
xml화일을 그림과 같이 불러 들인다
스키마는 정보의 타입을 규정한 또다른 하나의 부속 xml문이라고 할수 있다
현재 열려있는 시트의 codename이 sheet1이라고 가정하고..

Msgbox sheet1.ListObjects(1).XmlMap.Schemas(1).XML
라는 구문을 실행하면 ListObject가 갖고 있는 자동작성된 스키마내용을
볼수 있다



이렇게 불러들인 정보는 엑셀의 오브젝트중 하나인 ListObject에
담겨지게 된다..즉 ListObject와 링크가 되는 것이다
물론 이 오브젝트는 2003버전부터 시작되었지만 메소드나 속성들이
좀더 추가 되어 파워풀해졌다는 것..

2007버전의 오브젝트탐색기에서 보면 ..



이것이 이제 참 재미있을 것같지 않은가??!!..
데이타를 다루는데 있어서
엑셀과 XML은 이제 한통속이 되어있는 것이라고 해도 과언이 아니니..
잘 챙겨서 보시기 바란다..

아래의 구문을 실행해보시기 바란다
uno21.com 써버에 page_147.xml이라는 이름올 올려놓았다
이것을 여러분의 통합문서로 불러 들여 보시기 바란다

Sub importXMLtoListObject() ThisWorkbook.XmlImport _ URL:="http://uno21.com/aspnet/page_147.xml", _ importmap:=Nothing, _ overwrite:=True, _ Destination:=Range("A1") End Sub

xml문서가 여러분의 통합문서의 ListObject에 옮겨진것이다

위의 내용을 좀더 자동화해보록 하자

위의 구문으로 만들어진 ListObject의 속성과 메소드를
살펴보고..일반적인 시트상의 테이블과 비교하여 어떤 점이
편리하고 좋은지 살펴보도록 하자


xml_01.