🖥️ IT, 컴퓨터/🧮 엑셀

[Excel] 엑셀 xlsx 파일의 모든 시트를 csv로 저장하기 :: VBA 이용

김 홍시 2024. 7. 15.
반응형

 

문제상황

가지고 있는 xlsx 파일이 여러 개의 시트로 구성되어 있음.

이 파일을 csv로 저장하고 싶은데, csv는 하나의 시트만 저장이 가능함.

따라서 이 시트들을 각각 csv로 자동저장하고 싶음. 

 

 

해결방법

 

 

 

엑셀의 여러 시트를 각각 CSV 파일로 저장하는 VBA 코드를 아래에 제공합니다. 이 코드는 엑셀 파일 내의 모든 시트를 반복하며 각 시트를 CSV 형식으로 저장합니다.

  1. 엑셀 파일을 엽니다.
  2. Alt + F11을 눌러 VBA 편집기를 엽니다.
  3. Insert -> Module을 선택하여 새 모듈을 추가합니다.
  4. 아래 코드를 복사하여 모듈에 붙여넣습니다.
  5. F5 키를 눌러 코드를 실행합니다.
Sub SaveSheetsAsCSV()
    Dim ws As Worksheet
    Dim csvFilePath As String
    Dim folderPath As String
    Dim fileName As String
    
    ' 저장할 폴더 경로 설정
    folderPath = "C:"
    
    ' 폴더가 없으면 생성
    If Dir(folderPath, vbDirectory) = "" Then
        MkDir folderPath
    End If
    
    ' 모든 시트를 반복하며 각각을 CSV 파일로 저장
    For Each ws In ThisWorkbook.Worksheets
        ws.Copy
        fileName = ws.Name & ".csv"
        csvFilePath = folderPath & fileName
        ActiveWorkbook.SaveAs fileName:=csvFilePath, FileFormat:=xlCSV, CreateBackup:=False
        ActiveWorkbook.Close False
    Next ws
    
    MsgBox "모든 시트가 CSV 파일로 저장되었습니다.", vbInformation
End Sub

이 코드는 다음과 같은 동작을 수행합니다:

  1. folderPath 변수를 통해 CSV 파일을 저장할 폴더 경로를 설정합니다.
  2. 설정된 경로에 폴더가 없으면 생성합니다.
  3. 현재 워크북의 모든 시트를 반복하며 각 시트를 CSV 파일로 저장합니다.
  4. CSV 파일은 원본 파일과 동일한 위치에 "CSV Files" 폴더에 저장됩니다.

코드를 실행하면 각 시트가 CSV 파일로 저장되고 완료 메시지가 표시됩니다.

 

 

 

주의점

- 파일 경로에 한글이 들어가 있으면 오류가 날 수 있음 

 

 

해결 결과

이렇게 기존 xlsx 파일이 있는 경로에 여러 개의 csv 파일로 저장되었음.

반응형

댓글