반응형
오늘 소개할 내용은 여러 개의 파일로 분리된 데이터들을 하나의 파일로 통합하는 방법입니다. 각각의 파일에 있는 시트 데이터를 불러와서 하나의 파일에 통합하는 소스입니다. 개별 파일을 차례대로 열어서 시트를 복사한 후 통합 파일에 붙여 넣을 것입니다.
▼ 먼저 개별 엑셀 파일을 선택하기 위한 파일 선택 다이얼로그 창을 띄워야 합니다. Application 객체의 GetOpenFilename 함수를 이용합니다. 여러 파일을 선택할 것이기 때문에 MultiSelect 를 True 로 세팅했습니다.
fileNo = Application.GetOpenFilename(Filefilter:="엑셀파일(*.xlsx*),*.xlsx*", MultiSelect:=True)
▼ 파일을 선택하고 창을 닫으면 파일 목록을 반환합니다. 파일 개수만큼 For 문을 돌면서 파일을 오픈한다.
For i = 1 To UBound(fileNo)
Set ingFile = Workbooks.Open(Filename:=fileNo(i), ReadOnly:=True)
Next i
▼ 오픈한 파일의 첫 번째 시트에 데이터를 복사합니다. 복사할 영역은 Range 함수로 지정한다. 여기에 여러 시트를 복사하는 방법은 없습니다. 하나의 시트만 있다고 가정한 소스입니다.
With ingFile.Sheets(1)
Range("B2:F7").Copy
End With
▼ 다음으로 복사한 개별 시트 데이터를 현재 작업 엑셀에 붙여 넣는 작업을 진행하겠습니다. 그러기 위해서 Sheets.Add 로 시트를 추가합니다. 시트 이름은 사용자가 ws.Name 속성으로 정의합니다.
'' 시트 추가
Set ws = ThisWorkbook.Sheets.Add
sSheetName = "AddSheet" & i
ws.Name = sSheetName
▼ 위에서 새로 만든 시트에 복사한 데이터를 붙여 넣습니다.
iRow = ws.Range("A1").CurrentRegion.Rows.Count
ws.Cells(iRow, 1).PasteSpecial
▼ 오픈한 파일을 닫고 다음 파일로 넘어가서 지금까지 한 작업을 반복합니다.
ingFile.Close
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA 셀 참조하는 여러가지 방법 ▶ 엑셀 VBA 함수 만들어서 매크로와 연결하기 ▶ 엑셀 VBA 통합 문서 문서가 열리는 순간 기능 구현하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 |
▼ 지금까지 설명한 전체 소스는 다음과 같습니다.
Sub sum_multi_sheet()
Dim fileNo As Variant
Dim i As Integer
Dim ingFile As Workbook
Dim ws As Worksheet
Dim iRow As Integer
Dim sSheetName As String
fileNo = Application.GetOpenFilename(Filefilter:="엑셀파일(*.xlsx*),*.xlsx*", MultiSelect:=True)
Application.ScreenUpdating = False
Application.DisplayAlerts = False
For i = 1 To UBound(fileNo)
Set ingFile = Workbooks.Open(Filename:=fileNo(i), ReadOnly:=True)
With ingFile.Sheets(1)
'.Range(.Range("B2").End(xlDown), .Range("B2").End(xlToRight)).Copy
.Range("B2:F7").Copy
End With
'' 시트 추가
Set ws = ThisWorkbook.Sheets.Add
sSheetName = "AddSheet" & i
ws.Name = sSheetName
iRow = ws.Range("A1").CurrentRegion.Rows.Count
ws.Cells(iRow, 1).PasteSpecial
ingFile.Close
Next i
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
▼ 그림처럼 개발 파일에서 복사한 시트를 통합파일에 추가했습니다.
※ 아래는 참고하면 좋을 만한 글들의 링크를 모아둔 것입니다. ※ ▶ 엑셀 VBA 반복문 For Next 문 사용하기 ▶ 엑셀 VBA 셀 참조하는 여러가지 방법 ▶ 엑셀 VBA 함수 만들어서 매크로와 연결하기 ▶ 엑셀 VBA 통합 문서 문서가 열리는 순간 기능 구현하기 ▶ 엑셀 VBA 각종 함수 사용법과 샘플 소스 쉽게 얻는 방법 |
반응형
'엑셀(Excel) > VBA' 카테고리의 다른 글
엑셀 VBA 함수 Now 현재 날짜 및 시간 반환하기 (1) | 2024.11.02 |
---|---|
엑셀 VBA 셀을 병합하는 Merge 함수 사용하기 (1) | 2024.10.31 |
엑셀 VBA 작은 따옴표, apostrophe 일괄적으로 삭제하는 방법 (1) | 2024.10.25 |
엑셀 VBA 변수 생명 주기 지정하는 방법, Static 정적 변수 사용법 (1) | 2024.10.23 |
엑셀 VBA 여러 시트 데이터 합치기 (18) | 2024.10.15 |
엑셀 VBA 상태바 STATUSBAR 정보 출력하기 (0) | 2024.10.12 |
엑셀 VBA 셀 색상 변경하는 두 가지 방법 (2) | 2024.10.12 |
엑셀 VBA 연산자 사용해서 String 문자열을 합치기 (2) | 2024.10.11 |