반응형
실무 자동화 (9편): 1시간 노가다를 1초로 — 여러 파일 하나로 합치기
안녕하세요, 물류 현장에서 '시간'을 벌어다 드리는 칵칵입니다. ☕
월말이나 분기 말이 되면 어김없이 찾아오는 고통이 있죠. 바로 "수십 개로 흩어진 일일 리스트를 하나의 마스터 파일로 합치기"입니다. 파일을 하나하나 열어서 데이터 범위를 잡고, 복사하고, 마스터 파일 맨 아래로 가서 붙여넣고, 다시 닫고... 이 짓을 50번쯤 반복하다 보면 내가 지금 뭘 하고 있나 자괴감이 듭니다. 오늘은 이 지루한 반복을 단 1초 만에 끝내줄 VBA 마법을 공개합니다.
🛠 파일 통합 자동화 VBA 코드
Sub MergeAllWorkbooks()
Dim folderPath As String, fileName As String
Dim masterWB As Workbook, sourceWB As Workbook
Dim lastRow As Long, targetRow As Long
' 1. 폴더 경로 설정 (본인 컴퓨터 경로에 맞게 수정 필수!)
folderPath = "C:\Users\Desktop\RawData\"
fileName = Dir(folderPath & "*.xlsx")
Set masterWB = ThisWorkbook
Application.ScreenUpdating = False ' 화면 깜빡임 방지
Do While fileName <> ""
' 2. 데이터 파일 열기
Set sourceWB = Workbooks.Open(folderPath & fileName)
' 3. 데이터 복사 (첫 행 제외하고 복사)
lastRow = sourceWB.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
targetRow = masterWB.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row + 1
If lastRow > 1 Then
sourceWB.Sheets(1).Range("A2:Z" & lastRow).Copy masterWB.Sheets(1).Cells(targetRow, 1)
End If
' 4. 파일 저장 없이 닫기
sourceWB.Close SaveChanges:=False
fileName = Dir()
Loop
Application.ScreenUpdating = True
MsgBox "모든 파일 통합이 완료되었습니다! 칼퇴하세요!"
End Sub
💡 코드 핵심 해설 (초보자용)
- Dir(folderPath & "*.xlsx"): 지정한 폴더 안에 있는 엑셀 파일들을 하나씩 끄집어내는 탐지기 역할을 합니다.
- Application.ScreenUpdating = False: 매크로 실행 중에 파일이 열리고 닫히는 화면을 보이지 않게 처리하여 실행 속도를 10배 이상 높여줍니다.
- End(xlUp).Row + 1: 마스터 시트의 데이터가 있는 마지막 줄을 찾아 그 바로 다음 빈 줄에 붙여넣으라는 핵심 명령입니다.
⚠️ 칵칵의 포인트 해설: 여기서 실수하면 야근 확정!
- 실수 1: 폴더 경로의 역슬래시(\) 누락 -
folderPath변수를 적을 때 마지막에 반드시\를 넣어주어야 합니다. 안 그러면 폴더를 인식하지 못하고 파일 탐색에 실패합니다. - 실수 2: 열 순서가 다른 파일들 - 합치려는 모든 파일의 열 순서(A열: 날짜, B열: 고객 등)가 동일해야 합니다. 양식이 다르면 데이터가 뒤죽박죽 섞여서 수동으로 다시 정리해야 하는 비극이 생깁니다.
- 실수 3: 매크로 파일 본인 열림 - 통합할 데이터 파일이 있는 폴더에 이 매크로가 담긴 '마스터 파일'을 같이 두지 마세요. 파일 열기 과정에서 중복 오류가 발생할 수 있습니다.
- 실수 4: 확장자 확인 -
*.xlsx라고 코드를 짜면 구버전인.xls파일은 건너뜁니다. 모든 파일 형식을 아우르려면*.xls*로 수정하세요.
다음 엑셀 이야기 예고: 「엑셀 VBA (10편): 조건에 맞는 데이터만 골라 시트별로 자동 분리하기」
반응형
'코딩으로 시간 벌기 > 엑셀 VBA' 카테고리의 다른 글
| 실무 자동화 (11편): 조건에 맞는 데이터만 "PDF로 자동 변환" 하여 저장하기 (0) | 2026.03.31 |
|---|---|
| 실무 자동화 (10편): 조건에 맞는 데이터만 골라 시트별로 자동 분리하기 (0) | 2026.03.26 |
| 여덟 번째 이야기: 수천 줄 데이터에서 '원하는 것'만 쏙 뽑아내기 (0) | 2026.03.22 |
| 일곱 번째 이야기: 보고서 자동화의 기초, 주소 지정의 기술 (0) | 2026.03.17 |
| 드롭다운 목록, 매크로로 자동 업데이트하기! 🔽 (0) | 2026.03.12 |
