반응형

보통 인터넷에 VB .net 을 이용하여 엑셀 연동 관련하여 검색을 해보면 createObject 를 이용하여 개체를 생성하고 연결하는 과정이 소개가 되어 있는데 이런 경우 연동된 엑셀은 백그라운드로 실행되며 지정한 명령들을 수행한 뒤 종료되거나 메모리 해제가 되지 않는경우 종료 조차 되지 않습니다. 개발을 위하여 또는 실제 사용중에도 몇차례 실행하거나 기능 동작 중 작업관리자를 열어 보면 엄청나게 많은 엑셀 인스턴스가 있는 경우도 있지요.

사실 제가 필요한 것은 현재 열려있는 엑셀 실행 프로그램을 연동하는 방법이 필요했는데 하루 정도를 투입하여 이것저것 해보았으나 결국 실패 하였고 해외 검색을 통하여 방법을 알게되어 포스팅을 하게 되었습니다. (나중의 나를 위해서)

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

 

Imports Microsoft.Office.Interop.Excel '코드 최상단'

' 현재 실행중인 function 내'
Dim oExcel As Application ' 엑셀파일 App 억세스 오브젝트 '
oExcel = TryCast(Marshal.GetActiveObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)

 

요렇게 하면 현재 실행중인 Excel application 을 가져오는 것이 가능합니다.

 

다시 말하자면 현재 특정 엑셀 파일을 열어놓은 상태에서 위의 코드를 실행하면 바로 열려있는 해당 엑셀 파일과 연결이 되는 것입니다.

 

Imports Microsoft.Office.Interop.Excel '코드 최상단'

' 현재 실행중인 function 내'
Dim oExcel As Application ' 엑셀파일 App 억세스 오브젝트 '
Dim oBook As WorkBook
Dim oSheet As WorkSheet

oExcel = TryCast(Marshal.GetActiveObject("Excel.Application"), Microsoft.Office.Interop.Excel.Application)
oBook = oExcel.ActiveWorkBook '현재 열려 있는 엑셀 파일 중 선택되어 있는 문서'
'oSheet = oBook.ActiveWorkSheet '' 제가 코드를 잘못 썼네요. 죄송합니다.'
oSheet = oBook.ActiveSheet ' 현재 열려 있는 시트 (마지막으로 보았던 시트)'
oSheet.Cells[1,1].Interior.Color

 

이런식으로 사용하는 것이죠.

여기서 oSheet 를 ActiveWorkSheet 로 설정하였는데요. 특정 시트의 이름을 지정하려면 

oSheet = oBook.WorkSheets["Sheet1"]

 

과 같이 특정하여 지정하는 방법도 가능합니다.

여러개의 시트 사이에서 어떤 작업을 하려면 위와 같이 해주면 됩니다.

궁금하신 부분은 뎃글로 문의 해주시면 답변해보도록 하겠습니다.

 

*** 내용 추가 합니다. 2021-03-14

일단 프로젝트 시작할 때 정확하게 .net Framework , Visual Basic, Window Form 형식으로 프로젝트를 세팅하셨는지 확인을 하셔야 합니다. 위의 세팅이 맞지 않으면 정상적으로 동작하지 않을 수 있습니다.

그리고 엑셀 코드를 사용하기 위하여는 참조를 추가시켜 주어야 합니다.

우측의 솔루션 탐색기에서 참조 --> 참조추가 --> COM 순으로 들어가신 후

Microsoft Excel 00.0 Object Library (00.0 는 본인 컴퓨터에 깔려있는 엑셀 버전입니다)

를 체크하고 추가시켜 주어야 합니다. (찾기 어려우시면 저처럼 우상단 검색창에 excel 검색 ㄱㄱ)

엑셀 COM 오브젝트를 추가해 주어야 한다

이렇게 하시면  Excel 에서 사용하던 vba 를 대부분 사용하실 수 있습니다.

 

잘 안되시는 분을 위하여 간단하게 테스트용 소스코드를 올려 드립니다.

버튼을 누르면 현재 실행중인 엑셀 파일명, 시트명이 표시된다.
excel_connect_test.zip
0.06MB

 

감사합니다.

 

뎃글, 공감 은 블로그 작성자에게 큰 힘이 된답니다. 
도움이 되었다 생각되시면 클릭!!  부탁드려요~

 

https://diy-dev-design.tistory.com/84

 

Excel Automate, 엑셀 자동화 프로그램

필자의 블로그 명칭을 보고 이미 알고 계신분이 있을지 모르겠지만 사실 저는 디자이너 입니다. 하지만 블로그에 맨 개발 관련 된 이야기만 적고 있지요. 음... 그런데 실제로 회사에서도 저는 대부분의 시간을 코..

diy-dev-design.tistory.com

 

https://diy-dev-design.tistory.com/83

 

[C#] C# APP 에서 엑셀 연동해보기

엑셀에서 VBA 로 코드를 짜다 보면 막상 특정 엑셀 파일에만 VBA 가 적용이 가능하기 때문에 막상 다른 엑셀 파일에서 동일한 동작을 하려면 또 코드를 복사해 넣고 실행을 해야 하는 경우가 있습니다. 이런 경우..

diy-dev-design.tistory.com

 

 

반응형

+ Recent posts