계속해서 데이터 호출 프로그램을 만들어 봅니다.
대신 이번에는 같은 파일 내시트가 아닌 별도의 파일로 존재할 때 데이터를 호출하는 방법에 대해 알아보겠습니다.
거래처로부터 접수된 주문내역이 담긴 파일 ‘엑셀코딩_주문내역.xlsx’와 해당 주문내역에서 데이터를 받아 완성될 주문서 파일 ‘실전문제 06.3.1.xlsm’이 있다. 두 파일을 이용하여 ‘엑셀코딩_주문내역.xlsx’에 내용을 받아 ‘엑셀코딩_실전문제2.xlsm’을 완성하시오.
(실습 시 두 파일의 위치는 ‘C:\VBA\’입니다.)
Sub 실전문제_02()
Dim OA_Row_Count, I As Integer
Dim OR_File_Name, OR_Path, OR_File As String
OR_File_Name = “주문내역 06.3.1”
OR_Path = “C:\VBA\”
OR_File = OR_Path & OR_File_Name & “.xlsx”
Set OR_getFile = GetObject(OR_File)
OA_Row_Count = OR_getFile.Worksheets(“Sheet1”).Cells.SpecialCells(xlLastCell).
Row
For I = 2 To OA_Row_Count
Worksheets(“Sheet1”).Cells(I, 1).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
5).Value
Worksheets(“Sheet1”).Cells(I, 2).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
6).Value
Worksheets(“Sheet1”).Cells(I, 3).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
9).Value
Worksheets(“Sheet1”).Cells(I, 4).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
7).Value
Worksheets(“Sheet1”).Cells(I, 5).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
8).Value
Worksheets(“Sheet1”).Cells(I, 6).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
3).Value
Worksheets(“Sheet1”).Cells(I, 7).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
1).Value
Worksheets(“Sheet1”).Cells(I, 8).Value = OR_getFile.Worksheets(“Sheet1”).Cells(I,
2).Value
Next
OR_getFile.Close
Set OR_getFile = Nothing
End Sub
앞서 '데이터 주고받기 실습문제'와 거의 유사합니다.
다만 전달될 파일의 정보를 불러오기 위한 코드가 추가되었습니다.
OR_File_Name, OR_Path, OR_File은 엑셀코딩_주문내역.xlsx 파일의 위치와 이름을 지정한 것입니다.
다음으로 SET을 통해 해당 파일의 접근 권한을 갖는 객체(Set OR_getFile = GetObject(OR_File))를 생성합니다.
OR_getFile이라는 이름으로 객체가 생성되면 해당 파일 객체를 이용하여 '데이터 주고받기 실습문제'와 똑같이 해당 위치에 데이터를 입력하는 것이죠.
Set 객체 변수 = GetObject(파일명)
SET을 활용한 객체 생성 변수에 대한 설명은 별도의 책으로 구성할 수 있을 정도로 방대한 양입니다.
우리는 지금까지 DIM을 통해 특별한 저장 위치를 할당받는 변수 설정에 대해 학습해 보았습니다.
그러면 SET과 DIM을 통해 선언되는 변수의 차이는 무엇일까요?
여기서 우리는 다시금 객체에 대한 이해를 상기해야 합니다.
1장의 객체란 무엇인가 부분을 다시 보고 오는 것도 좋습니다.
객체란 유/무형의 모든 것이라 설명드렸습니다.
그리고 객체는 기본적으로 속성과 값 그리고 메소드를 포함한다고 하였죠.
따라서 DIM을 통한 변수는 값을 담는 공간이 되고, SET를 통한 변수는 객체가 가지는 기본적인 권한을 모두 담는 의미가 되는 것이죠.
그래서 GETOBJECT를 통해 특정 파일의 권한을 모두 부여받는 객체 변수를 선언하는 구문이 포함된 것입니다.
이렇게 함으로써 선언된 객체변수를 통해 해당 객체를 조정하고 값을 호출할 수 있는 권한이 생기게 되죠.
조금은 복잡하다고 생각할 수 있지만 의외로 간단합니다.
DIM을 통한 일반변수는 단순한 값을 가지며 SET을 통한 객체변수는 객체가 가지는 모든 권한을 부여받는 것이죠.
실습 파일 다운로드 : 문서를 열지 않고 데이터 호출하기 : 네이버 블로그 (naver.com)