라이브러리
프로그래밍언어, 각종코드, 관련동향, 논문 등의 저장소
닷넷과 함께 하는「오피스 2003 솔루션 개발」맛보기

닷넷과 함께 하는「오피스 2003 솔루션 개발」맛보기

 

오피스 애플리케이션 사이에서 서로 통신하고 이를 자동화하는 데는 내장 VBA 언어를 이용하는 것이 일반적이었다. 그러나 개발자들은 MS 프로그래밍의 미래인 비주얼 스튜디오 닷넷을 겨냥해야 한다. 다양한 툴을 제공하고 객체지향 개발 환경을 지원하며 암호화와 같은 유용한 객체를 포함한 코드 라이브러리인 프레임워크를 무수하게 제공하기 때문이다.

많은 개발자들은 오피스 애플리케이션의 상호 연동이나 외부 연동을 자신만을 방식으로 해결한다. 여기서는 어떻게 액세스를 활성화하고 보고서를 출력하는 VB.NET 애플리케이션 예제를 통해 하나하나 살펴 본다. 이러한 방법을 기업 환경에 적용하면 오피스 스위트와 VBA에 의존하지 않고도 오피스 애플리케이션을 자동화할 수 있다.

오피스 2003용 VB.NET 프로젝트 생성
여기서 설명하는 예제는 비주얼 스튜디오 2003과 오피스 2003이 설치된 환경을 기준으로 진행된다. 이전 버전에서도 가능할 수 있지만 테스트해보지는 않았다. 또한 샘플 데이타베이스는 비주얼 스튜디오의 기본 예제 파일인 노스윈드(Northwind) 것을 사용한다.

VB.NET을 시작하고 새로운 윈도우 스타일 애플리케이션을 연다. 그리고 메뉴에서 파일 -> 새파일 -> 프로젝트를 선택한다. 이제 왼쪽 구획(프로젝트 유형)에서 비주얼 베이직 프로젝트를 클릭하고 템플릿 구획에서 윈도우 애플리케이션을 더블클릭한다. 그러면 'Form 1'이 나타는데 이를 더블클릭해 코드 윈도우를 연다.

이제 당신은 VB.NET 개발자들이 초기화 코드 작성에 이용하는 Form_Load 이벤트를 이제 보게될 것이다. 코드가 별로 길지 않은 유틸리티의 경우, 개발자들은 종종 여기에 모든 코드를 몰아 넣곤 한다. 이제 Form_Load 이벤트에 다음과 같이 입력하자.

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   ' instantiate Access
   Dim objAccess As Access.Application
   objAccess = New Access.ApplicationClass
   ' make Access visible to the user
   objAccess.Visible = True
   ' open the Northwind sample database
   objAccess.OpenCurrentDatabase(filepath:="C:\Program Files\Microsoft Office\Office11\Samples\Northwind.mdb")
   ' identify the report you want to display
   objAccess.DoCmd.SelectObject(ObjectName:="Sales by Category", InDatabaseWindow:=True, _
   ObjectType:=Access.AcObjectType.acReport)
   ' show the report
   objAccess.DoCmd.OpenReport(ReportName:="Sales by Category", _
          View:=Access.AcView.acViewPreview)
   objAccess = Nothing
End Sub


코드 타이핑을 맞치면 다음 문장에 에러가 있다는 의미로 점선 밑줄이 있음을 확인할 수 있다.

access.Application
access.ApplicationClass


이들 객체로 마우스 포인터를 옮기면 타입(Type)이 정의되지 않았다는 작은 메시지를 볼 수 있다. 경험많은 VB 개발자라면 여기서 타입이라는 단어가 갖는 의미에 놀랄지도 모른다. 하지만 걱정할 필요는 없다. 이는 VB.NET이 VB 개발자를 중심에 놓고 개발되지 않았기 때문에 나타나는 현상일 뿐이다. VB.NET 문서 작업에도 VB 개발 경험이 많은 사람들이 참석한 것 같지 않다. 그러니 C언어 식의 설명에 익숙해지는 것이 좋다. 여기서 타입이란 객체(object)를 의미한다.

오피스 2003 어셈블리 다운로드
이제 코드 테스트를 위해 오피스 2003 어셈블리를 다운로드 한다.를 눌러 테스크를 하면 이전과 동일하게 ‘타입 미정의’ 에러에 직면하게 된다. 이것은 필요한 레퍼런스(reference)를 액세스 객체 라이브러리에 포함시키지 않았기 때문이다. 마치 임포트(Import) 명령어와 유사하다.

이제 VB.NET 코드 윈도우에서 프로젝트 -> 추가 레퍼런스를 선택해 대화상자의 COM 탭을 클릭한다. 그리고 찾기로 가서 MS 액세스 11.0 객체 라이브러리(11.0은 오피스 2003을 의미)를 더블클릭한다. 이제 OK를 눌러 대화상자를 닫고 VB.NET 프로젝트에 이 액세스 코드 라이브러리를 추가한다.

혹시 COM 라이브러리 목록에서 MS 액세스 11.0 객체 라이브러리를 찾을 수 없는가? 이는 분산 프레임워크에서 개발자들이 흔히 직면하는 문제 중의 하나이다. 라이브러리가 없다면 해결책은 간단하다.MSDN에서 다운로드하면 된다.

이밖에도 개발자를 다소 혼란스럽게 하지만, 개발 환경을 풍부하게 하는 아이템으로 오피스 XP 기본 Interop 어셈블리(PIA)가 있다. PIA는 코드 라이브러리, DLL의 또다른 이름이다.

코드 라이브러리를 지칭하는 용어는 25개나 되는데, 어셈블리, 컨트롤 라이브러리, 클래스 라이브러리, 컨트롤 타입 라이브러리, 코어 타입 라이브러리, 개발 환경, 다이나믹 링크 라이브러리, 확장성, 호스트 객체 모델, 커널, 헬퍼, 객체 라이브러리, 객체 모델, 네임스페이스, 프로젝트 모델, 프록시립(proxylib), 플러그인, 플러그인 타입 라이브러리, 런타임 실행 라이브러리, 런타임 실행 엔진, 런타임 라이브러리, 서비스, 서비스 라이브러리, 타입 라이브러리 등이다.

물론 이들 중 일부는 미세하게 의미가 다른 것이 사실이다. 예를 들어 컨트롤은 일반적으로 코드 라이브러리에 사용자 인터페이스를 추가할 때 사용한다. 그러나 이런 차이에도 불구하고 이들 용어의 대부분은 단지 중복된 유의어일 뿐이다.

어쨌든 오피스 XP PIA를 다운로드한 다음에는 바로 사용할 수 있을까? 미안하지만 아직 작업이 더 남았다. 이를 설치해 실행하기 위해 필요한 절차는 readme.htm 파일을 참고하라. 단 PIA 설치 후 윈도우를 재시동하는 것을 잊으면 안된다. 참고로 이 코드 라이브러리 없이도 VB.NET과 오피스 2003 애플리케이션 사이의 통신이 가능하다. 그러나 이 강좌의 예제를 실행하려면 반드시 PIA가 필요하다.

VB.NET 애플리케이션의 실행
이제 F5를 눌러서 코드를 실행할 수 있는 모든 준비가 끝났다. 액세스를 실행하면 노스윈드 샘플 데이타베이스의 ‘카테고리별 판매량’이 표시될 것이다. 액세스가 데이타베이스를 열지 못한다는 에러 메시지를 출력하면, Northwind.mdb 데이타베이스가 아래 하드 드라이브 경로에 존재하지 않기 때문이다.

C:\Program Files\Microsoft Office\Office11\Samples\Northwind.mdb


이 때는 샘플 데이타베이스를 이 경로로 이동시키거나 코드의 경로를 바꾸면 된다. 샘플 데이터베이스가 없다면 비주얼 스튜디오 CD에서 설치해야 한다. 그러면 우리가 만든 최초의 VB.NET 오피스 2003 애플리케이션 예제를 정상적으로 수행할 수 있을 것이다. @

 

Richard Mansfield (ZDNet Korea)

2004/09/09
원문보기

 

사용자 삽입 이미지

 

원문 :http://www.zdnet.co.kr/techupdate/lecture/dotnet/0,39024986,39130264,00.htm

  Comments,     Trackbacks