• 최초 작성일: 2002-10-24
  • 최종 수정일: 2026-09-30
  • 조회수: 9 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 여러 엑셀 파일 하나로 통합하기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

Give up making whishes. Instead, set goals. 소원을 비는 일을 그만 멈추고, 대신 목표를 세워라.

이 가을... 더 늦기 전에... 요행을 바라기 보다 실제 할 수 있는 일을 하나씩 해 나가야 겠습니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

여러 엑셀 파일 하나로 통합하기

핵심 요약: 여러 파일을 하나로 통합하기

파일 열기 대화상자에서 여러 파일을 선택하고, 각 파일의 데이터를 새 시트의 마지막 행 아래에 차례로 붙여 넣는 방식으로 통합합니다.

  • 1단계: GetOpenFilename(MultiSelect:=True)로 통합할 파일들을 선택받습니다.
  • 2단계: 통합용 새 시트를 만들고 파일을 하나씩 엽니다.
  • 3단계: UsedRange를 A열 마지막 데이터 아래에 복사하고 파일을 닫습니다.

Step 1: 어떤 질문이었을까요?

1년치 자료로 엑셀 파일이 360개 정도 있고, 각 파일에는 시트가 하나씩, 그 시트에는 300줄 정도의 자료가 들어 있습니다. 이 파일들을 하나의 파일, 하나의 시트에 이어 붙여 모으는 방법이 없겠느냐는 질문이었습니다.

비슷한 질문으로, 엑셀 파일이 100여 개인데 피벗 테이블로 모으면 힘들지 않겠느냐, 매크로로 파일마다 =[Book1.xls]대구!R4C8 같은 링크 수식을 일일이 넣는 것은 번거로우니 다른 방법이 없겠느냐는 질문도 있었습니다.

Step 2: 여러 파일을 한 시트로 통합하기

파일이 100여 개나 되는데 이것을 일일이 '복사-붙여 넣기'해서 하나의 파일로 만든다거나 또는 위와 같이 일일이 하드 코딩을 해 주어야 한다면 날밤 다 새겠지요?

일단 폴더를 하나 만들고 병합하고자 하는 파일들을 옮겨 놓으신 다음 아래의 버튼을 클릭해 보세요. 대화 상자에서 Ctrl 키나 Shift 키를 누른 채 파일을 선택하면 여러 개의 파일을 동시에 선택할 수 있습니다.

몇 개의 파일이든 새로운 시트에 통합이 되지요?

Sub ConsolWorkbook()

    Dim varFileName As Variant
    Dim varTemp As Variant
    Dim shtSheet As Worksheet
    Dim wrkBook As Workbook
        Dim i As Long
    Dim rngTarget As Range
    Application.ScreenUpdating = False
    varFileName = Application.GetOpenFilename(filefilter:="Excel Files(*.xls),*.xls", Title:="작업파일을 모두 선택하세요", MultiSelect:=True)
    ' GetOpenFilename 메서드를 이용하여 열기 대화 상자를 표시하고 사용자가 선택한
    ' 파일 이름을 얻을 준비를 합니다.

    If TypeName(varFileName) = "Boolean" Then
        Application.ScreenUpdating = True
        Exit Sub
    End If
    Set shtSheet = Worksheets.Add
    shtSheet.Move after:=Sheets(Sheets.Count)
    ' 워크시트를 한장 삽입하고 워크북의 맨 마지막으로 이동시킵니다.

    For Each varTemp In varFileName
    ' 선택된 파일(들)에 대해 순환문을 실행합니다.

        Set wrkBook = Workbooks.Open(varTemp)
        Set rngTarget = shtSheet.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        ' 선택된 파일을 열고, 현재 워크북의 마지막 시트(shtSheet) 중에서 데이터가 들어있는
        ' A열의 마지막 셀 바로 아래 Range를 rngTarget Range 오브젝트 변수로 지정합니다.
        ' 그래야 데이터를 계속 붙여 나갈 수 있겠지요?

        wrkBook.Worksheets(1).UsedRange.Copy rngTarget
        ' 편의상 선택된 파일의 첫번째 워크시트 내용만 복사를 하는 것으로 만들었습니다.
        ' 여러 시트의 내용을 복사하시려면 이 부분에 순환문을 한번 더 중첩하면 되겠지요?
        ' 이것은 여러분이 직접 해 보시기 바랍니다.

        Application.CutCopyMode = False
        wrkBook.Close savechanges:=False
        i = i + 1
    Next varTemp
    If i = 0 Then
        MsgBox "오류가 발생하였습니다"
        Application.ScreenUpdating = True
        GoTo ET
        ' 만약 비정상적인 형태의 파일이 선택되었다면 오류 메시지를 띄우고 에러 트래핑 구문을
        ' 실행합니다.

    End If
    Application.ScreenUpdating = True
    MsgBox "파일 통합 작업을 완료하였습니다", , "www.iExceller.com"
ET:

End Sub

GetOpenFilename 메서드에 MultiSelect:=True를 지정하면 여러 파일을 한꺼번에 선택할 수 있습니다. 선택된 파일을 하나씩 열어 데이터가 들어 있는 영역을 통합용 시트의 A열 마지막 데이터 아래에 복사하고 파일을 닫는 과정을 반복합니다. 편의상 각 파일의 첫 번째 워크시트만 복사하도록 만들었으며, 여러 시트를 복사하려면 순환문을 한 번 더 중첩하면 됩니다.

코드는 그다지 길지 않지만 조금만 응용력을 발휘하신다면 편리하게 사용하실 수 있지 않을까 싶습니다.

다음 시간에…

정리 — 파일 통합 핵심 코드

구분 사용한 코드 역할
파일 선택 Application.GetOpenFilename(MultiSelect:=True) 여러 파일 이름 배열
취소 확인 TypeName(varFileName) = "Boolean" 대화상자 취소 감지
붙일 위치 Cells(Rows.Count, 1).End(xlUp).Offset(1, 0) 마지막 행 다음 셀
복사 .Worksheets(1).UsedRange.Copy rngTarget 데이터 복사
파일 닫기 wrkBook.Close savechanges:=False 저장 없이 닫기

자주 묻는 질문 (FAQ)

Q1. 여러 파일을 한꺼번에 선택하려면 어떻게 하나요?

GetOpenFilename의 MultiSelect 인수를 True로 지정하고, 대화상자에서 Ctrl 키나 Shift 키를 누른 채 파일을 선택합니다.

Q2. 파일 선택을 취소하면 어떻게 되나요?

대화상자를 취소하면 False가 반환되므로 TypeName으로 Boolean인지 확인해 프로시저를 종료합니다.

Q3. 여러 시트가 있는 파일도 통합할 수 있나요?

예제는 첫 번째 시트만 복사합니다. 각 파일의 시트를 순환하는 For Each 문을 한 번 더 중첩하면 모든 시트를 통합할 수 있습니다.

마치며

코드는 길지 않지만 응용하기에 따라 반복적인 파일 취합 업무를 크게 줄일 수 있습니다.