PROGRAMMING WORKSHOP

.NetFrameWork | 엑셀화일 열고,닫고,읽고,쓰고

이런 질문이 있다
파일에 접근하려고 하는데 일반 텍스트파일과 다르게 접근방법은 모르겠습니다...
Imports XL = Microsoft.Office.Interop.Excel
'엑셀개체생성
Dim oXL As New XL.Application
' 새로 생성하는 경우는 다음과 같이 .Add 하면 되는데...
Dim oBook As XL.Workbook = oXL.Workbooks.Add

' 기존 파일을 불러오기할 경우는 방법을 모르겠습니다...
Dim oBook As XL.Workbook = oXL.Workbooks.Open("기존파일.xls")
Dim oSht As XL.Worksheet = oBook.Worksheets(1)
XL.Visible = True

하나도 틀린 것 없이 맞는 구문이다
그냥 환경이 낯섫어서 조금 헷갈리셨을 것이다

아래와 같이 해보도록 하자
윈도우 폼을 하나 만든다
프로그래밍적으로 메뉴를 하나 만든다
폼이 실행한후 메뉴를 크릭하면 아래와 같이 실행하게 해본다
엑셀개체가 생성된다
엑셀시트에 랜덤으로 정보를 몇개 작성한다
엑셀화일이 바탕화면에 저장되고 닫힌다
닫힌후 화일대화상자가 나타난다
화일대화상자에서 위에서 작성저장한 엑셀화일을 선택하여 열면
랜덤으로 작성된 정보를 읽어서 문자열변수에 저장하게 한다
엑셀이 닫히고 엑셀관련 개체 삭제한다
텍스트박스를 하나 폼에 만들어 끼운다
텍스트박스의 Text속성에 엑셀에서 얻어온 정보를 뿌려준다



VBA에서 외부개체를 불러서 작업하듯이
윈도우에서도 외부개체 불러 오듯이 엑셀을 불러서
작업하면 되는 것..
엑셀의 최상위개체만 갖여오면 나머지는 VBA에서 엑셀을
다루는 것과 똑같다

접근하는 방법은 Reference탭에서 Net라이브러리를 갖여 오던
Com라이브러리를 갖여 오던 두가지 방법으로 갖여 올수 있다
Net라이브러리로 갖여 오게 되면 .NetFrameWork환경에서
Interop이라는 중간 라이브러리가 Com과 .Net간의 통신하는
역할이 하나 더 있는 셈..
아무튼 Interop...Net라이브러리에서 갖여다가 사용하자

열고, 닫고, 읽고, 쓰고를 모두 구현하였으니
나머지는 VBA에서 하던 짓을 그대로 하면 되니..
참으로 별 일이 아닌것!!

COM 개체를 사용할때는 사용후 개체를
특별히 메모리에서 해제 하는 작업을 꼭 해야 한다는 점을
잊지 마시고

Sub ReleaseComObject(ByVal oComObj As Object) If oComObj IsNot Nothing Then System.Runtime.InteropServices.Marshal.ReleaseComObject(oComObj) oComObj = Nothing GC.Collect() GC.WaitForPendingFinalizers() End If End Sub

중요한 것은 외부개체생성..해제 절차를 잘 수행하면 되는 것
나머지는 아래 화일의 모듈에 설명..

***[LOG-IN]***