카테고리 없음

엑셀 여러 CSV 파일을 여러 워크시트로 합치기(chatgpt)

dope123 2025. 5. 25. 21:37

여러 개의 csv 파일들이 있고 그 파일들을 하나의 엑셀파일 내의 각각의 워크시트를 구성하도록 합치려면 어떻게 해야할까?

 

csv 파일들이 너무 많아 파이썬을 돌리니 너무 오래걸렸다.

 

그래서 vba를 쓸 생각을 했고 이러한 취합 기능을 가진 파일은 인터넷에서 찾지 못해 chatgpt를 통해 직접 vba 코드를 작성해보았다.

 

 

 

 

Sub ImportCSVsToWorksheets()
    Dim folderPath As String
    Dim csvFile As String
    Dim newSheet As Worksheet
    Dim qt As QueryTable

    ' 폴더 선택창
    With Application.FileDialog(msoFileDialogFolderPicker)
        .Title = "CSV 파일이 있는 폴더를 선택하세요"
        If .Show <> -1 Then Exit Sub
        folderPath = .SelectedItems(1) & "\"
    End With

    Application.ScreenUpdating = False
    Application.DisplayAlerts = False

    ' CSV 파일 반복
    csvFile = Dir(folderPath & "*.csv")
    Do While csvFile <> ""
        Set newSheet = ThisWorkbook.Sheets.Add(After:=Sheets(Sheets.Count))

        On Error Resume Next
        newSheet.Name = Left(Replace(Replace(csvFile, ".", "_"), " ", "_"), 31)
        On Error GoTo 0

        ' QueryTable로 불러오기
        Set qt = newSheet.QueryTables.Add( _
            Connection:="TEXT;" & folderPath & csvFile, _
            Destination:=newSheet.Range("A1"))

        With qt
            .TextFileConsecutiveDelimiter = False
            .TextFileTabDelimiter = False
            .TextFileSemicolonDelimiter = False
            .TextFileCommaDelimiter = True
            .TextFilePlatform = 949 ' ✅ EUC-KR 인코딩 대응
            .Refresh BackgroundQuery:=False
        End With

        csvFile = Dir()
    Loop

    Application.DisplayAlerts = True
    Application.ScreenUpdating = True

    MsgBox "✅ 모든 CSV 파일을 시트로 불러왔습니다!", vbInformation
End Sub

 

 

 

실행 방법은 다음과 같다.

 

1. Excel에서 Alt + F11 → VBA 편집기 열기

2. 삽입 > 모듈 클릭

3. 위 코드 붙여넣기

4. F5 또는 Excel에서 매크로 실행

 

한글 데이터가 깨지거나 한자로 변환되는 등 문제가 있었는데 이를 챗지피티에 그대로 물어보면 수정된 코드를 알려준다.