반응형

실무 자동화 (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 #매크로 #파일통합 #업무자동화 #칼퇴꿀팁 #물류관리 #VBA강좌 #직장인코딩 #데이터합치기 #엑셀꿀팁 #칵칵 #자동화코드 #데이터정리 #VBA초보 #시간단축

다음 엑셀 이야기 예고: 「엑셀 VBA (10편): 조건에 맞는 데이터만 골라 시트별로 자동 분리하기」

반응형

+ Recent posts