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
감사합니다.
'Programming > MS Excel VBA' 카테고리의 다른 글
| VBA Code: 엑셀 시트를 이름 순으로 정렬(오름차순/내림차순) (3) | 2024.02.22 |
|---|---|
| VBA Code: 날짜를 인수로 받아 요일을 반환하는 함수 (2) | 2024.01.29 |
| VBA Code: 엑셀 파일 연결 끊기가 안될 때 문제 해결 (3) | 2024.01.17 |
| VBA Code: 엑셀 시트 복사시 이름 충돌 해결을 위한 (1) | 2024.01.10 |
| VBA 코딩 환경 설정하기(배경화면 검은색으로 눈을 편하게 하기) (2) | 2024.01.06 |