엑셀로 업무하다 보면
여러 개의 엑셀 파일을 하나로 합쳐야 하는 일이 생각보다 자주 생깁니다.
일일 보고서, 지점별 실적, 담당자별 자료를 하나로 모으는 작업은
막상 해보면 시간도 많이 들고 은근히 스트레스가 됩니다.
예전에는 저도 엑셀 파일 하나씩 열어서
복사해서 붙여넣고, 또 열고 붙여넣고…
이걸 계속 반복했습니다.
그래서 만들어 둔 게 엑셀 VBA로 여러 엑셀 파일을 합치는 매크로입니다.
지금도 실무에서 계속 쓰고 있고,
파일 개수가 많을수록 효과가 더 확실하게 느껴집니다.
엑셀 파일 합치기에 VBA를 쓰는 이유
엑셀 기본 기능만으로도 파일 병합은 가능하지만,
파일이 많아질수록 한계가 분명합니다.
- 엑셀 파일 개수가 많아질수록 작업 시간이 길어지고
- 복사/붙여넣기 과정에서 실수할 가능성도 커지고
- 같은 작업을 계속 반복하게 됩니다
VBA 매크로를 한 번 만들어 두면
버튼 한 번으로 여러 엑셀 파일을 한 번에 합칠 수 있어서
월말이나 보고 시즌에 특히 편합니다.
여러 엑셀 파일을 하나로 합치는 VBA 매크로
아래 매크로는
여러 엑셀 파일을 선택해서 하나의 시트로 합치는 방식입니다.
- 첫 번째 파일은 제목 행(헤더)까지 복사
- 두 번째 파일부터는 데이터 행만 추가
- 모든 파일은 읽기 전용으로 열어서 원본 손상 없음
실무에서 쓰기 좋게 기본적인 부분은 다 처리해 두었습니다.
VBA 매크로 사용 방법
- 엑셀에서 Alt + F11 눌러 VBA 편집기 실행
- 상단 메뉴에서 [삽입] → [모듈] 클릭
- 아래 VBA 코드를 그대로 복사해서 붙여넣기
- 엑셀로 돌아와 Alt + F8 → MergeFiles 실행
엑셀 VBA 코드 (전체)
Sub MergeFiles()
Dim FilesSelected As FileDialog
Dim i As Long
Dim WorkBk As Workbook
Dim SourceSheet As Worksheet
Dim CurrentSheet As Worksheet
Dim LastRow As Long
' 작업 속도 개선
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Set CurrentSheet = ThisWorkbook.ActiveSheet
Set FilesSelected = Application.FileDialog(msoFileDialogFilePicker)
With FilesSelected
.Title = "합칠 엑셀 파일들 선택하세요"
.AllowMultiSelect = True
.Filters.Clear
.Filters.Add "Excel Files", "*.xls; *.xlsx; *.xlsm"
If .Show = -1 Then
For i = 1 To .SelectedItems.Count
Set WorkBk = Workbooks.Open(.SelectedItems(i), ReadOnly:=True)
Set SourceSheet = WorkBk.Worksheets(1)
LastRow = CurrentSheet.Cells(CurrentSheet.Rows.Count, 1).End(xlUp).Row
If LastRow = 1 And CurrentSheet.Cells(1, 1).Value = "" Then LastRow = 0
If i = 1 Then
SourceSheet.UsedRange.Copy CurrentSheet.Cells(1, 1)
Else
SourceSheet.UsedRange.Offset(1, 0).Resize( _
SourceSheet.UsedRange.Rows.Count - 1).Copy _
CurrentSheet.Cells(LastRow + 1, 1)
End If
WorkBk.Close SaveChanges:=False
Next i
MsgBox "엑셀 파일 병합이 완료되었습니다."
Else
MsgBox "파일을 선택하지 않았습니다."
End If
End With
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
End Sub
사용 전에 꼭 확인할 점
실무에서 문제 없이 쓰려면 아래 사항은 꼭 확인하는 게 좋습니다.
- 합칠 엑셀 파일들의 열 순서와 양식이 동일해야 합니다
- 데이터는 각 파일의 첫 번째 시트에 있어야 합니다
- 매크로가 들어간 파일은 .xlsm 형식으로 저장해야 합니다
- 보안 경고가 나오면 매크로 사용 허용을 눌러야 합니다
실제로 써보면 이런 경우에 편합니다
- 지점별 / 부서별 엑셀 파일 취합
- 일일·주간·월간 실적 데이터 정리
- 여러 사람이 작성한 동일 양식 파일 병합
- 반복되는 엑셀 복사·붙여넣기 작업 제거
마무리
엑셀 파일 여러 개 합치는 작업은
한 번만 자동화해 두면 계속 써먹을 수 있는 업무 중 하나입니다.
매번 손으로 엑셀 파일 붙여 넣고 계셨다면
VBA 매크로 한 번 만들어 두는 것도 나쁘지 않습니다.
다음 글에서는
- 폴더 하나만 지정하면 자동으로 엑셀 파일을 합치는 방법
- 여러 시트를 동시에 병합하는 VBA 매크로
같은 내용도 정리해 보려고 합니다.
필요하신 분들께 조금이라도 도움이 됐으면 좋겠습니다.
'업무 자동화' 카테고리의 다른 글
| 엑셀 VBA: 작업 중인 파일 자동으로 백업하기 (날짜·시간 저장) (0) | 2026.01.26 |
|---|---|
| 엑셀 VBA: 아웃룩 연동해서 메일 한 번에 보내기 (0) | 2026.01.25 |
| 엑셀 VBA: 폴더 내 파일 이름 한 번에 바꾸기 (특정 글자 치환 매크로) (1) | 2026.01.24 |
| 엑셀 VBA: 폴더 내 엑셀 파일을 PDF로 한 번에 변환하기 (0) | 2026.01.23 |
| 엑셀 VBA: 시트별로 파일 따로 저장하기 (시트 나누기 매크로) (3) | 2026.01.22 |