Programming/MS Excel VBA

VBA Code: 엑셀 파일 저장시 파일 이름에 날짜 시간을 추가하여 사본을 생성

레드마티즈 2024. 1. 7. 20:50
728x90

중요한 데이터를 엑셀로 작업 도중 저장을 눌러 되돌리기가 안되는 상황이 발생할 때가 있습니다.

 

이때 저장 버튼을 누를 때마다 파일 저장경로에 날짜와 시간을 추가하여 사본을 생성하는 코드를 공유 합니다.

 

먼저 VBA 창을 열고 모듈을 하나 추가하여 아래 코드를 입력합니다.

Sub AutoSaveCopy()

    Dim filePath As String
    Dim fileName As String
    Dim fileExtension As String
    Dim newFileName As String

    '현재 파일의 경로 및 파일명, 확장자 추출
    filePath = ThisWorkbook.Path & "\"
    fileName = ThisWorkbook.Name
    fileExtension = "." & Split(fileName, ".")(UBound(Split(fileName, ".")))

    '사본 파일명 생성 (현재 시간을 추가하여 중복 방지)
    newFileName = Left(fileName, Len(fileName) - Len(fileExtension)) & "_" & Format(Now, "yyyymmdd_hhmmss") & fileExtension

    '사본 저장
    ThisWorkbook.SaveCopyAs filePath & newFileName
   
End Sub

 

현재 통합 문서를 더블 클릭한 후,

 

Workbook_BeforeSave 이벤트에서 위에서 생성한 코드를 실행하게 하면 됩니다.

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    AutoSaveCopy
   
End Sub

 

이제 엑셀 파일 저장시마다 아래와 같이 사본이 생성됩니다.

 

파일을 저장할 때가 아니라 파일을 열 때 사본을 생성하고 싶다면, Workbook_Open 이벤트에서 위에서 생성한 코드를 실행하게 하면 됩니다.

Private Sub Workbook_Open()

    AutoSaveCopy

End Sub

 

감사합니다.