PROGRAMMING WORKSHOP

Skip Navigation Links. Skip Navigation Links.

VSTO_5 | ActionPane

이제 VSTO를 사용하여 엑셀을 좀더 강력하게 만들어주는 작업을
하나,하나 해 나가 보도록 하자
몇주전에 uno-weekly에서 다루었던 테니스동호회께임관리도구를 대강
만들어 보면서..동시에 VSTO버전으로 꾸며 나갔었다
그것을 하나,하나 따져 보도록 한다



소루션창의 구성요소는 3장의 워크시트를 기본으로 하여 시작하자
아래의 그림과 같이 콘트롤의 각각의 시트명을 선택하면
해당시트로 이동되어 해당 작업을 하도록 하는 내용이다
분석시트에 가면 각종 분석을 위한 버튼들을 크릭하면 해당 분석작업을 하고
학습용으로 만든 것이라서 좀 허접하지만 중요한 기능을 모두 넣어 보려고
했다



중요한 것은 각종 콘트롤의 활용도 좋지만
분석을 할때 워크시트를 순환하면서 정보처리가 참으로 버벅거리지만
.NET FrameWork에서 지원하는 정보처리를 위한 크라스들의
활용이 중요하다..
정보처리시 버벅거리고 효율이 떨어지는 것만큼 짜증나는 것이 없으니까!!!

우선 ActionPane을 달아보자
ActionPane은 통합문서를 열면 오른쪽에 나타나는 도움말 창이다
위의 그림의 오른쪽 [문서동작]이라고 한 창을 말한다
여러분의 엑셀에서 CommandBars("Task Pane").Name이라고 직접실행창에서
실행해 보시면 메뉴창의 일부분임을 알수 있을 것이다
Visible=True로 해보았자 나타나지 않는다
아무튼 VSTO에서는 아래와 같이 표현하여야 접근하게 되고

Globals.ThisWorkbook.Application.CommandBars("Task Pane")

이것은 VBA로 처리할수 없는 엑셀의 오브젝트이고 이것은
CommandBar에 소속이 되어 있고
VBA로는 처리못한다
왜냐하면 처리한다고 해도 의미가 없다..
그냥 빈탕의 창만 나타나게 되니까..
VBA로 가능하게 해도 허당이다..아무 의미가 없는 것이다
이속에 내용을 꾸면 넣어야 하는데 이 내용을 꾸미는 것이
윈도우프로그램의 콤포넨트인 UserControl이라는 것을 삽입하고
꾸면 넣고 이것을 ActionPane에 올려 주어야 하는 것이다

우선 UserControl을 삽입하고 디자인해 나가는 일을 하여야 한다
이것은 윈도우프로그램을 하나 만드는 것이나 마찬가지라고 생각하면 되고
이것은 곧..VSTO를 활용한다고 하는 것은 윈도우프로그램을
만들어서 엑셀에 장착시키는 아주 많이 확장된 엑셀아닌..
엑셀을 만들어 나가는 작업이 되는 것이다

또한 현대의 프로그래밍은 크래스와 오브젝트지향적 프로그램이라는 것을
실감하고, 연습을 시키기 위하여 [일정관리소루션]이라는 주제로
진행하였던(아직도 미완성이지만..)것을 주로 사용자정의 오브젝트를
만드는 크래스모듈을 왜 그렇게 강조했는지 아는 기회가 될 것이다
그 것에 관심을 갖고 차근차근 하셨던 분은 감각이 이미 잡혀서
VSTO가 낯섫지 않겠지만..
그렇지 않다면 좀 껄끄러움을 경험하면서 가게 될 것이다

아래의 그림과 같이 UserControl을 삽입하고 무언가를 우선
만들어 보자



개념은 아래와 같다



usercontrol은 작은 버튼들 카렌다들 콘트롤들을 여러개 모은
또 하나의 콘트롤이 되는 것이다
그러니 자신이 만들고자 하는 엑셀소루션(물론 다른 워드나 파워포인트등 모두)
의 목적에 필요한 엑셀자체의 지원콘트롤들이 아닌 윈도우시스템에서
지원하는 것들을 엑셀자신의 것 같이 만들어서 사용할수 있게 되는 것이다

우선 어느 소루션에나 필요한 카렌다를 달아서 구현해 보도록하자
위와 같이 콘트롤들만 모아서 삽입해 보았자
두뇌가 없다
지능을 심는 코딩을 해야 할 것이고
코딩또한 콘트롤과 콘트롤간의 연결과 연결을 위하여 각각의 콘트롤
엑셀의 오브젝트에 어떻게 접근하느냐는 접근방법을 알면 되는 것이다



많은 콘트롤에서 카렌다컨트롤을 아래와 같이 끌어내어 엑셀에서
UserForm에서 콘트롤을 사용하듯이 삽입하면 되는 것이다



***[LOG-IN]***

우선 맛보기로 띄워 보았다
아마도 엑셀VBA에서 강조했던 것들..
이벤트프로시져의 중요성..이벤트프로시져의 활용..
크래스모듈의 활용..변수관리를 잘 하여야 하는 것들..
오브젝트..크래스..
외부라이브러리의 활용 등등이 한꺼번에 몰려 오는 것이 VSTO가 될 것이다
특히 외부라이브러리의 활용을 엑셀에서는
그냥 외부라이브러리가 보조적 역할이였지만
VSTO소루션에 가서는 외부라이브러리의 조립공장이 된다고 해도
과언이 아닐 것이다
위에서 버튼을 만들때도
Dim oX As New Button
이라고 했지만 여기에서의 Button은 엑셀에 있는 Button이 아니다
위의 것은
Dim oX As New System.Windows.Forms.Button
에서 System.Windows.Forms라는 경로(NameSpaces)를 통하여
얻어지는 Button..즉 윈도우의 콘트롤인 것이다



재미있지 않은가??
좀 도전정신이 필요 할 것이고..
다음 페이지에서 보자