Q15. 다른 책의 셀을 참조하는 방법?

6024 단어 VBAExcelExcelVBA
이번에는 다른 엑셀 파일에서 값을 참조하는 방법을 생각해 갑니다.
이전에는 다른 시트에서 값을 참조하는 방법을 다루었습니다.
그것의 약간 응용 버전입니다.



이런 식으로 데이터 .xlsx와 매크로 테스트 .xlsm이라는 파일을 준비했습니다.
매크로 테스트가 읽는 파일이며 데이터 .xlsx가 읽는 데이터가 들어 있습니다.
한 파일입니다.

데이터 .xlsx의 내용은 다음과 같습니다.



이것을 읽어 매크로 테스트 안에 있는 전체 시트에 추기해 가려면? 라는 것을
생각해 봅시다.
매크로 테스트의 전체 시트는 이런 느낌입니다.



그냥 B16 셀이 열려 있기 때문에 16 행째에 데이터를 반영하고 싶네요.

■ 포인트



다른 책에서 셀을 참조하는 경우 이미 열려 있고 아무 것도 열지 않은 경우
처리가 됩니다.
이미 열려 있다면 그대로
Range("B16").Value = Workbooks("데이터.xlsx").Worksheets(1).Range("B3").Value
와 같이 작성할 수 있습니다만, 이 경우는 대상이 되는 책이 열려 있지 않은 경우,
읽을 수 없어 오류가 발생합니다.

예를 들어, 열려 있는지 여부를 미리 확인하고
함께 처리를 작성하는 방법 등이 있지만, 이번에는 간단하게
원래 열려 있지 않은 경우를 상정하고,
대상 책 열기 → 특정 셀의 값 참조
라는 흐름으로 매크로를 만들어 갑시다.

책을 여는 것은 쉽습니다.
Workbooks.Open Filename:="절대 경로"
됩니다. 디렉토리에 따라서는 파일명만으로도 열 수 있으므로,
상황에 따라 구분해 봅시다.

■답변


Sub Q15_Answer()
    Dim wb As Workbook
    Set wb = ThisWorkbook
    Dim ws As Worksheet
    Set ws = wb.Worksheets("全体")

    Workbooks.Open FileName:=("C:\Users\user\Desktop\work\VBAマクロ\データ.xlsx")
    ws.Range("B16").Value = Workbooks("データ.xlsx").Worksheets(1).Range("B3").Value
    ws.Range("C16").Value = Workbooks("データ.xlsx").Worksheets(1).Range("C3").Value
    ws.Range("D16").Value = Workbooks("データ.xlsx").Worksheets(1).Range("D3").Value
    ws.Range("E16").Value = Workbooks("データ.xlsx").Worksheets(1).Range("E3").Value

    ws.Activate

    Set wb = Nothing
    Set ws = Nothing

End Sub


■해설



첫째, 통합 문서와 워크 시트를 저장하는 변수를 선언하고 읽는 대상입니다.
전체 시트를 대입하고 있습니다.
이것은, 시트를 참조하는 기술을 할 때 짧게 보기 쉽게 하기 위해서입니다.
로드 소스도 마찬가지로 변수에 넣으면 더 보기 쉬워집니다.

그런 다음 Workbooks.Open FileName:=("C:\Users\user\Desktop\work\VBA 매크로\데이터.xlsx")
에서 로드할 책을 열고 있습니다.
경로는 적절하게 환경에 맞게 변경하십시오.

덧붙여서, 이미 대상 책을 열고있는 상태에서이 열기 프로세스가 실행되었다고 가정합니다.
그래도 오류로 멈추지 않습니다. 그대로 후속 처리가 흐릅니다.

그런 다음 직접 대상 셀을 참조하면됩니다.
마지막 ws.Activate는, 데이터를 대입한 뒤는 데이터측의 셀이 액티브하게 되어 버리기 때문입니다.
이 1 문장을 넣는 것으로, 결국 전체 시트를 활성화하고 있습니다.

실행 결과는 다음과 같습니다. 무사히 복사할 수 있었습니다.

좋은 웹페이지 즐겨찾기