본문 바로가기

현재 시트를 CSV 출력하는 VBA 코드 작성하기

by SunnyB 2023. 2. 21.
목차

현재 작성한 시트에서 매크로를 실행하여 CSV 로 저장하는 VBA 코드입니다.

 

Sub SaveAsCSV()
    Dim myPath As String
    Dim myFileName As String
    Dim currentTime As String
    Dim myWB As Workbook
    Dim myWS As Worksheet
    
    ' 현재 워크시트와 워크북을 가져오기
    Set myWS = ActiveSheet
    Set myWB = ActiveWorkbook
    
    ' 만약 현재 엑셀 문서가 저장되지 않았다면 저장 메시지를 표시하고 저장
    If myWB.Saved = False Then
        response = MsgBox("저장되지 않은 변경 사항이 있습니다. 저장하시겠습니까?", vbQuestion + vbYesNo, "저장")
        If response = vbYes Then
            myWB.Save
        End If
    End If
    
    ' 현재 시간을 파일 이름에 사용할 형식으로 변환
    currentTime = Format(Now(), "yyyy-mm-dd_hh-mm-ss")
    
    ' 파일 저장 대화상자 열기
    myPath = Application.GetSaveAsFilename(InitialFileName:=currentTime, FileFilter:="CSV Files (*.csv), *.csv")
    
    ' 사용자가 파일 이름을 지정하고 확인을 눌렀을 경우에만 파일 저장
    If myPath <> "False" Then
        ' 파일 경로와 파일 이름 분리
        myFileName = Right(myPath, Len(myPath) - InStrRev(myPath, Application.PathSeparator))
        myPath = Left(myPath, InStrRev(myPath, Application.PathSeparator))
        
        ' 새 워크북 만들기
        Workbooks.Add
        
        ' 데이터 복사해서 붙여넣기
        myWS.Cells.Copy
        ActiveWorkbook.Sheets(1).Cells.PasteSpecial xlPasteValues
        
        ' CSV 파일로 저장
        ActiveWorkbook.SaveAs Filename:=myPath & myFileName, FileFormat:=xlCSV, CreateBackup:=False
        ActiveWorkbook.Close SaveChanges:=False
        
        MsgBox "파일 저장 완료!"
    Else
        ' 사용자가 파일 이름을 지정하지 않고 취소를 눌렀을 경우
        MsgBox "파일 저장이 취소되었습니다."
    End If
End Sub

 

 

위 코드는 엑셀의 VBA를 사용하여 현재 활성화된 워크시트를 CSV 파일로 저장하는 매크로입니다.

매크로는 아래와 같이 구성되어 있습니다.

 

변수 선언하기

✏️ MyFilePath, MyFileName, CurrentWB, CurrentWS, myPath, myFileName, currentTime, myWB, myWS: 변수를 선언하고 각 변수에 대한 설명을 주석으로 기록합니다.

 

현재 워크시트와 워크북 가져오기

✏️ Set 문을 사용하여 현재 워크시트와 워크북을 가져옵니다.

 

파일 경로 및 이름 지정하기

✏️ MyFilePath 및 MyFileName 변수를 사용하여 파일 경로와 이름을 지정합니다.

✏️ currentTime 변수를 사용하여 현재 시간을 파일 이름에 사용할 형식으로 변환합니다.

 

파일 저장 대화상자 열기

✏️ Application.GetSaveAsFilename 메서드를 사용하여 파일 저장 대화상자를 엽니다.

✏️ 사용자가 파일 이름을 지정하고 확인을 누르면 myPath 변수에 파일 경로 및 이름이 저장됩니다.

 

파일 저장

✏️ If 문을 사용하여 사용자가 파일 이름을 지정하고 확인을 눌렀을 경우에만 파일 저장합니다.

✏️ Right 및 Left 함수를 사용하여 파일 경로 및 이름을 분리합니다.

✏️ Workbooks.Add 메서드를 사용하여 새 워크북을 만듭니다.

✏️ Copy 및 PasteSpecial 메서드를 사용하여 데이터를 복사하고 붙여넣습니다.

✏️ ActiveWorkbook.SaveAs 메서드를 사용하여 CSV 파일로 저장합니다.

✏️ ActiveWorkbook.Close 메서드를 사용하여 새 워크북을 닫습니다.

 

저장 여부 확인

✏️ Application.DisplayAlerts 속성을 사용하여 저장 여부를 확인합니다.

✏️ 저장되지 않은 워크북이 있으면 저장하라는 메시지를 표시합니다.

✏️ 이 매크로는 엑셀에서 VBA를 사용하여 CSV 파일로 저장하는 방법을 보여줍니다.

 

만약 사용자가 저장되지 않은 워크북이 있을 경우에는 저장 여부를 확인하는 메시지를 표시하여 사용자가 잃어버리는 정보를 최소화할 수 있습니다.

댓글