<엑셀VBA 입문 12강> 특정파일 특정시트의 특정셀을 가져오는 매크로

<엑셀VBA 입문 12강> 특정파일 특정시트의 특정셀을 가져오는 매크로

본 블로그에서 어떤 분의 질문을 받았다.

특정파일 특정시트의 특정셀을 가져오는 매크로는 어떻게 짜야 하는지 알려주실수 있을까요. ㅠ 응용해서 만들어 보려고 하는데 잘 안되네요. 파일은 매크로 설정 파일과 같은 디렉토리에 있습니다. 파일명과 시트명만 인자로 더 넘기면 될 것 같은데. 안 구해지네요. ㅠ

의미있는 질문으로 생각되어 강의로 만들어보았다.

1. 현재 셀의 값 구하기

엑셀에서는 현재 선택한 셀을 ActiveCell [액티브 셀]이라고 부른다. 현재 선택한 셀의 값은 ActiveCell.Value 이라고 쓰면 쉽게 얻는다.

2. 현재 시트에서 특정 셀의 값 구하기

현재 선택한 시트는 ActiveSheet [액티브 시트]라고 한다. 현재 선택한 시트에서 특정 셀의 값을 구하기 위해서는, Range 함수나 Cells 함수를 쓰면 된다.

현재 시트에서 A1 셀의 값 가져오는 방법이다. 둘 중 아무거나 쓰면 된다.

(1) ActiveSheet.Range(“A1”).Value

(2) ActiveSheet.Cells(1, 1).Value

(1)은 특정 셀의 이름으로 값을 가져오는 방법이고, (2)는 행, 열로 가져오는 방법이다.

참고로 현재 열려있는 시트의 이름을 가져오려면 ActiveSheet.Name 이라고 쓰면 된다.

3. 특정 시트에서 특정 셀의 값 구하기

엑셀에서는 여러 개의 시트(엑셀파일)를 묶어서 워크북이라고 한다. 현재 열려있는 파일은 ActiveWorkbook [액티브 워크북]이라고 한다. 다른 시트에서 특정 셀의 값을 구하려면, 워크북 내에서 특정 시트를 고르고, 그 안에서 특정 셀의 값을 가져오면 된다.

(현재 열고있는 엑셀 파일 상에서) 특정 시트를 가져오는 방법이다.

(1) ActiveWorkbook.Sheets(3)

(2) ActiveWorkbook.Sheets(“Sheet3”)

(1)은 시트 순서값으로 가져오는 방법이고, (2)는 시트 이름으로 가져오는 방법이다. Sheets(1)은 첫번째 시트를 뜻한다. 시트 순서값은 1부터 시작하므로 0 을 넣으면 오류가 발생한다.

참고로 화면을 특정 시트로 전환하려면 ActiveWorkbook.Sheets(“Sheet3”).Activate 이런 식으로 쓰면 된다.

4. 다른 파일의 특정 시트에서 특정 셀의 값 구하기

질문받은 내용이다. 특정파일 특정시트의 특정셀을 가져오는 방법이다.

GetObject 라는 함수를 이용해 엑셀 파일을 열면, 정말 쉽고 편안하게 조작할 수 있다.

엑셀 파일은 아래와 같이 읽는다.

Dim excelFile As Workbook
Set excelFile = GetObject(“C:\test\1.xlsx”)

절대경로로 되어있는데 상대경로로 하고 싶다면 ActiveWorkbook.Path 을 활용하면 된다. (현재 열고 있는 엑셀파일의 경로다. 값이 없다면 아직 엑셀파일이 저장되지 않은 상태이다)

GetObject 함수 인자로 특정 엑셀파일을 넘기면, 파일이 Workbook [워크북] 객체가 된다.

워크북 객체가 된 이상 시트를 얻고, 특정한 셀 값을 얻어내는건 무지 쉽다. 항목 “3. 특정 시트에서 특정 셀의 값 구하기”에 잘 나와있다.

4-1. 엑셀 파일 만들고 저장하기


아래와 같이 엑셀 파일을 작성하고, C 드라이브의 test 폴더를 만들어 1.xlsx 라는 파일명으로 저장한다.

 

4-2, 매크로 작성

새 파일을 만들고, 아래와 같이 매크로를 작성한다.

Sub 매크로1()

‘ 매크로1 매크로

‘ 바로 가기 키: Ctrl+k

Dim excelFile As Workbook
Set excelFile = GetObject(“C:\test\1.xlsx”)

Dim val

‘A1 값을 가져온다.
val = excelFile.Sheets(1).Range(“A1”).Value

MsgBox (“결과값 : ” & val)

‘다 사용한 파일 객체는 꼭 닫아준다.
excelFile.Close

End Sub

화면과 같이 특정 파일, 특정 시트의 특정 셀 값을 얻어오는 것을 확인할 수 있다.

이어지는 글 <엑셀VBA 입문 13강> 선택영역 한꺼번에 변경하기(VBA Selection)  : https://blog.naver.com/bb_/221303389424

이어지는 글 <엑셀VBA 입문 14강> On Error 구문의 사용 : https://blog.naver.com/bb_/221329746966
이어지는 글 <엑셀VBA 입문 15강> 텍스트 파일쓰기, 파일읽기 : https://blog.naver.com/bb_/221329757129