ExcelVBAでファイルを閉じるとバックアップを作成・保存する

ExcelのVBAでファイルを閉じる時に自動でバックアップを保存するコードを作成しました。

作成背景

仕事でWBSをExcelで作成してプロジェクト管理をしているのですが、このWBSが非常に大切でマメにバックアップを取りたいと思いました。

毎回手動でコピーするのも面倒だし、ただ単にコピーするとファイル名が重複してうまくいきません。

そこで、ファイル名に日付を追加した上で同ディレクトリ内の「99_Backup」ディレクトリにファイルをコピー・保存するようにしました。

コード

コードはこちらです。

Private Sub Workbook_BeforeClose(cancel As Boolean)
    
    On Error Resume Next
    Application.DisplayAlerts = False
    
    Dim thisPath As String  'For obtaining path of this file
    Dim FileDate As String  'For date and time to make a new file name
    Dim NewFileName As String   'For new name
    
    thisPath = ThisWorkbook.Path
    FileDate = Format(Now, "yyyymmdd-hhnn")
    
    Dim OriginalFileName As String
    OriginalFileName = ThisWorkbook.Name
    
    Dim Pos As Integer
    Pos = InStr(OriginalFileName, ".")
    
    NewFileName = Left(OriginalFileName, Pos - 1)
  
    NewFileName = NewFileName & "_bkup" & FileDate
        
    'Check if 99_Backup folder exists
    Dim result
    Dim backup_dir
    backup_dir = thisPath & "\99_Backup"
    result = Dir(backup_dir, vbDirectory)
    If result = "" Then
        'Not exist, so create
        MkDir backup_dir
    End If
        
    'Saving this foder as the new name
    ThisWorkbook.SaveAs Filename:=thisPath & "\99_Backup\" & NewFileName, FileFormat:=xlOpenXMLWorkbook

    Application.DisplayAlerts = True

End Sub
めっさん
  • めっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後日系企業でグローバル案件に携わる。大小様々な企業を転々としながら、マレーシアやアメリカへの赴任経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。年齢は秘密だけど定年も間近かな。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です