Excel & VBA---Brain Training
Class Module|엑셀에서 Word의 테이블개체를 구현해보자
uno-weekly에서
워드문서를 생성하는 것을 하다 보면
Table개체가 속성이나 메소드가 다채롭다
왜냐면 Word는 엑셀같은 Grid로 구성된 시트가 없으니
처음부터 허허벌판에 새로 만들어야 하니까..그럴 수 밖에 없다
그러다 보니 Table개체가 화려하다
크래스모듈의 활용의 좋은 연습이 될 것이라서 Word의 Table개체를
엑셀의 크래스모듈에 만들어 보는 연습을 하다 보면
워드의 자동화도 알고 크래스모듈의 활용도 좀더 적극적이 될 것 같다
우선 워드문서에 테이블을 하나 만들어 보면..
VBA편집기의 도구/참조 대화상자에서 MicrosoftWord를 참조시키고
참조시킨후 아래와 같이 프로시져내에 작성하고 실행하면
Dim oWord As New Word.Application
Dim oDoc As Word.Document
Dim oTable As Word.Table
oWord.Visible = True
oWord.Activate
Set oDoc = oWord.Documents.Add
Set oTable = oDoc.Tables.Add(oDoc.Range(0, 0), 10, 5)
와 같이 하면 아래와 같이 워드문서상에 테이블이 그려진다
엑셀시트와 같이 셀이 없으니 그려야 하는 것이다
이렇게 한후 Table개체에 값을 넣고 서식을 하는 도구들이
워드는 Table개체에 줄줄이 많이 달려 있는 것이다
그림과 같이 Table개체의 다양한 일꾼들의 목록이 나타난다
욕심내서 이런 개체를 엑셀에서 흉내내어 사용한다면
테이블을 많이 그리는 작업을 요하는 환경에서는 아주 편리할 것이다
우선 위의 그림과 같이 워드에 표현되는 것을 엑셀시트에 그려지도록
크래스모듈을 이용해서 만들어 보시는 문제!!
이렇게 생각해보자
테이블 공장을 하고 있는데
주문을 받는다
열의 갯수는 10개구요..
행의 갯수도 10개루 해주구요..
열머리의 바탕색은 노랑색으로 해주구요
열머리의 폰트는 굵게 작성하게 해주세요
그리구요..테이블의 범위에 이름을 붙여 주세요, 나중에 찾기 쉽게요..
그리구요..맨밑의 행 하나를 추가해서요 여기에는 위의 10개행의
집계가 자동계산되게..집계수식을 넣어주구요
그리고 테이블열머리 행을 제외하구 서식을 천자리를 끊는거..있잖아요..
그렇게 해주구요..
또 테두리선은요..열머리행의 바닥테두리는요 더블라인으로 해주구요
나머지는 그냥 보통테두리선으로 해주세요
참..합계행은 바탕색을 회색으로 하고 폰트는 굵은 색이요..
라고 주문을 할 것이다
실은 이렇게 주문을 받다보면 두서가 없을 것이다
그래서 양식을 주고 어떤 것은 어떻게
또 다른 것은 어떻게 선택적으로 주문을 하게 하는 것이 사람들의
생각일 것이다
프로그래밍도 역시 마찬가지다
주문받은 것을 어떻게 체계적으로 생산라인에 올릴 것인가..
간단하게...일하기 편하게!!라는 생각이 중요 할 것이다
정리하면
열의 갯수=10
행의 갯수=10
합계행갯수=1
열머리행 바탕색=노랑색
집계행 바탕색=회색
집계행 수식=SUM
집계행 폰트=굵게
테두리선=가는석
열머리바닥선=더블선
열머리폰트=굵게
와 같이 사람이 행동하는 것 같이 하는 것에 최대한 접근한 방법이
이렇게 일대일 값전달하기...즉 속성이 생기게 된 것이다
크래스모듈의 활용을 어렵게 생각하지 마시고
그냥 위와 같이 구현해보시기 바란다
그러면 크래스모듈이 필요해진다