본문 바로가기
■ 칼퇴를 위한 VBA : 사례/- VBA for 엑셀

VBA 코드를 활용한 엑셀 파일 저장 자동화 방법

by 포탈메이커 2023. 6. 24.

VBA 코드를 활용한 엑셀 파일 저장 자동화 방법

엑셀을 사용하는 대다수의 사람들은 매일 수많은 데이터를 다루며 엑셀의 기술력에 대해 깊은 감사를 표하고 있을 것입니다. 그러나 이 모든 과정은 수작업이 필요하다는 것을 공감하실 분들도 계실 겁니다. 특히 매일 일정시간마다 데이터를 저장하는 업무에서는 엑셀 파일을 저장하는 작업이 번거롭기 때문입니다.



 

칼퇴키트, 업무용 도구모음

칼퇴를 위해 꼭 필요한 도구 모음을 제공합니다. 당장의 업무에 필요한 순간 사용하는 가벼운 메모장, 계산기, 변환기 등

portalmaker.backtohome.kr

 

1. VBA 코드를 이용한 파일 저장 방법

VBA 코드로 엑셀 파일을 자동으로 저장하는 방법은 다음과 같습니다.

Sub SaveWorkbook()
    Dim strFileName As String
    Dim strFolder As String
    
    '현재 열려있는 파일의 경로를 가져온다
    strFileName = ActiveWorkbook.Name
    strFolder = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1)
    
    '파일을 변경하면서 저장한다
    ActiveWorkbook.SaveAs Filename:=strFolder & "\" & strFileName, _
        FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

위 코드를 실행하면 현재 열려있는 엑셀 파일이 자동으로 저장됩니다. 이 코드는 엑셀 파일이 저장될 디렉토리를 자동으로 가져와 파일 이름도 현재 열려있는 파일의 이름으로 대체해줍니다. 디렉토리 경로가 정해져 있다면 strFolder에 그 경로를 지정해주시면 됩니다.

 

이 코드를 매일 특정 시간마다 실행하도록 하면 엑셀 파일 저장을 자동화하여 번거로움을 줄일 수 있습니다. 진행 방법은 크게 두 가지입니다.

  1. 일정 시간마다 실행하는 방법

매일 같은 시간에 특정한 시트에서 이 코드를 실행할 수 있도록 설정하면 엑셀 파일 저장을 자동화할 수 있습니다.

Private Sub Workbook_Open()

' 1:00:00 AM에 코드를 실행하도록 설정한다
Application.OnTime TimeValue("01:00:00"), "SaveWorkbook"

End Sub
  1. 원하는 조건이 맞으면 실행하도록 설정하는 방법

특정한 조건이 맞는 경우에만 코드가 실행되도록 설정할 수도 있습니다. 이 예제에서는 셀 값의 변경을 감지하면 코드가 실행되도록 설정합니다.

Private Sub Worksheet_Change(ByVal Target As Range)

'A1 셀 값이 변경되면 파일 저장 코드가 실행된다
If Target.Address = "$A$1" Then
    Application.EnableEvents = False
    Call SaveWorkbook
    Application.EnableEvents = True
End If

End Sub

2. 종합적인 VBA 코드 적용 방법

위의 코드들을 종합적으로 적용한 예제 코드는 다음과 같습니다.

Private Sub Workbook_Open()

' 1:00:00 AM에 코드를 실행하도록 설정한다
Application.OnTime TimeValue("01:00:00"), "SaveWorkbook"

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)

'A1 셀 값이 변경되면 파일 저장 코드가 실행된다
If Target.Address = "$A$1" Then
    Application.EnableEvents = False
    Call SaveWorkbook
    Application.EnableEvents = True
End If

End Sub

Sub SaveWorkbook()

Dim strFileName As String
Dim strFolder As String

'현재 열려있는 파일의 경로를 가져온다
strFileName = ActiveWorkbook.Name
strFolder = Left(ThisWorkbook.Path, InStrRev(ThisWorkbook.Path, "\") - 1)

'파일을 변경하면서 저장한다
ActiveWorkbook.SaveAs Filename:=strFolder & "\" & strFileName, _
    FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False

End Sub

 

이 코드를 적용하면 파일을 변경할 때마다 저장하도록 설정하고, 매일 정해진 시간에도 저장하게 됩니다.


3. 마치며

위에서 소개한 VBA 코드를 이용하면 엑셀 파일의 저장을 자동화하여 매우 편리하게 사용할 수 있습니다. 이 코드를 수정하면서 자신의 환경에 맞게 변형해 사용해보세요. VBA를 이용하면 엑셀에서 불필요한 작업을 줄이고 효율적으로 일할 수 있습니다.



포스팅이 도움이 되셨다면 구독, 공감, 댓글 부탁드려요!

행복한 하루 되세요!