PROGRAMMING WORKSHOP

VSTO_11 | 엑셀자원자유롭게 참조하기

VSTO에서 엑셀프로그래밍은 쉽다
그러나 오브젝트개념을 좀더 충실히 갖여야 한다
아래와 같이 어떤 시트상의 셀의 테두리를 서식을 하려고 한다

Globals.Sheet1.Range("A1").Borders(

라고 하면 VBA에서는 줄줄이 열거상수가 나타난다..
그런데 Visual Studio 환경에서는 뻐하고 기다리고 있다..
어쩌라구!@#!
아래의 그림과 같이



그러나 밑에 나타난 메시지를 잘 보면 된다..
그리고 그 내용을 주욱 입력하면 아래와 같이 최종적으로 입력하고
싶은 테두리의 위치를 표시하는 열거상수가 나타나고 이것을 선택함 된다



아이..쓰!@이것을 일일이 죄다 입력해야 하나!@@
visual studio 입장에서는 엑셀은 외인부대다..
그러니 풀패쓰를 줘야 알아 먹는다
microsoft.Office.Interop.Excel.XlBordersIndex
xlBordersIndex가 테두리에 대한 열거상수목록이 되는 것이다
위의 것을 생략하려면..
크래스모듈시트의 선언부에 아래와 같이 해주면
앞의 것들은 입력하지 않아도 된다

Imports XL = Microsoft.Office.Interop.Excel
Public Class ThisWorkbook
........
........
.......
End Class

위의 말인즉은 Microsoft.Office.Interop.Excel 라이브러리를 앞으로
계속 사용할 것이고 이름을 XL이라고 지어 놓을테니
XL을 입력하면 이놈이 Excel을 대표한다는 점...아시기 바람!!!
이라고 선언한 셈이다
즉 앞으로는 XL이라는 이름이 microsoft.Office.Interop.Excel을 대신 할 것이다!!
라는 선언과 마찬가지다

그러면 아래와 같이 XL하고 쩜찍으면 엑셀에서와 같은 자원리스트를
보면서 입력할수 있게 된다



요령이 생기면 정말 편리한 Visual Studio라는 것을 알게 된다
모든 열거상수의 요령은 마찬가지다..

Microsoft.Office.Interop

은 Win32 의 Com 컴포넨트운영체제를 .Net FrameWork의 체제로
변환시켜주는 하나의 중간 통역군단이다..
Interoperability 의 준말이다
너와 내가 태어난 종자가 달라도 같이 손잡고 일을 하자는 소리다

현재는 win32 체제의 것으로 하나..하나 .
Net FrameWork로 변환시켜가고 있다고 보면 될 것이다
변환이 안되는 것은 그냥 Interop이라는 중간역할을 두고
사용하면 되는 것이고..

아무튼 아무 지장없이 Visual Studio에서의 작업이 되는 것이고
문제는 VSTO 로 엑셀소루션..오피스소루션을 만들기 전에
VBA로 자유롭게 소루션을 만들수 있는 베이스가 깔려있어야 한다는점은
어쩔수 없이 갖추어야 할 자질이다

엑셀 VBA는 너무 심심해요..뭔가 더 자극적인 것 없어요??!@#
프로그래밍이라는 마약에 중독되어..이제 좀더 쌘것이 필요한
그런 분들은 이곳을 즐기시면 된다

엑셀뿐만 아니라 다른 라이브러리의 것들을 위와 같이 참조시켜서
종합소루션세트를 만들어 갈수 있는 신나는 장소이기도 하다

아래에서 보다 시피..뻑하면 이쪽 동네는 Class라는 소리가 나온다

Imports XL = Microsoft.Office.Interop.Excel
Public Class ThisWorkbook
........
........
.......
End Class

VBA에서 함수나 프로시져선언하듯이 Class가 흔해 빠졌다..
그래서 uno-weekly에서도 이런 장래의 자연스러운 확장을 생각해서
크래스모듈과 친해지도록 노력을 할 생각이다

다음 페이지에서 크래스 이야기를 좀 해보도록 하자