PROGRAMMING WORKSHOP

.Net FrameWork,VB.Net | VBA_XL프로그래밍학습도구만들기

엑셀의 자동화를 vb.net에서

앞페이지에서는 통합문서를 윈도우폼에서 띄웠었다
이제 버튼을 크릭하면 통합문서, 즉 엑셀을 자동화해 보이면서
그렇게 자동화하려면 VBA로는 어떻게 작성하는 지를 보여주는 학습도구의
쌤플을 만들어 보자
응용하여 여러분들이 후학들이나 후배들에게 엑셀프로그래밍을 학습시키는
더 발전된 도구로 만들어 보시겠다는 생각을 갖고 보도록 하자

VB.Net에서 엑셀을 자동화하는 코드를 별도의 프로젝트로 하는 것이 좋을 것이다
이렇게 프로그램을 하다가 보면, 이것을 별도의 프로젝트로 할까..
아니면 하나의 프로젝트에 몽땅 털어 넣을까??
고민을 하게 되는 부분들이다..
윈도우 프로그램이 아닌, 엑셀 VBA에서도 라이브러리를 참조하게 하면
좋을 것 같은 생각도 들고,
또 다른 인터페이스에 엑셀을 다루는 부분을 별도로 불러서 쓸수도 있을 것이고..
그런 생각을 하게 될때는 별도의 프로젝트를 만드는 것이 좋다



소루션에 Add/New Project 하여 크래스모듈프로젝트를 하나 추가한다
크래스모듈의 이름을 XLRange 로 이름을 바꿔주면 아래와 같이
달랑 시트하나 생긴다

Public Class XLRange

End Class

그리고 ,엑셀을 다루어야 하니까..
엑셀 라이브러리(Microsoft.Office.Interop.Excel)를 참조하여야 한다
그리고 임포트(Imports)시켜야 코딩이 순조롭고
그리고, 추가된 프로젝트가 COM라이브러리로도 사용할수 있게
(VBA편집기의 참조에서 참조하여 VBA에서도 사용할수 있는 라이브러리 화일)
프로젝트화일에서
Application/Assembly Information/Make Assembly COM-Visible을 체크해주고
Compile/Register for COM Interop을 체크해주고
크래스모듈에 몇줄 추가 해준다


''참조한 엑셀 라이브러리 임포트시키고
Imports XL = Microsoft.Office.Interop.Excel
'' 아래라이브러리 참조는 COM작업을 하기 위하여 필수적으로 임포트시켜야 한다
'' 기본적으로 참조는 되어 있으니, 참조할필요는 없고
Imports System.Runtime.InteropServices
''아래 Attribute(속성)은 VBA에서도 사용할수 있는 COM 라이브러리로 하라는 지시
<ClassInterface(ClassInterfaceType.AutoDual)>
Public Class XLRange

'' 이곳에 모든 엑셀작업을 넣도록 별도의 크래스프로젝트인 것..

End Class