エクセルシートの履歴を自動管理する(超簡易版)

エクセルファイルのバージョン管理をするために、

  • 新しく作ったファイルを「別名で保存する」
  • 元々あるファイル名を変更する

のどちらかで対応するケースは多いと思います。

ただ、いちいち別名で保存するのは面倒ですし、「別名保存」「ファイル名変更」をし忘れると大変です。

そこで、自動的に履歴を記録するVBAマクロを作りました。

ただし、かなり、簡易的な作りですので、あまり実用的ではありません。たたき台としてお使いください。

この記事の目次


ソースコード

次のソースコードを「ThisWorkbookモジュール」に貼り付けてください。

Const HISTORYDIR_RELATIVE = ".history"

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
  If ThisWorkbook.Path <> "" Then
    Call Backup
  End If
End Sub

Private Sub Backup()
  Dim DateString As String
  DateString = Format(Now, "yyyymmddhhmmss")
    
  Dim FSO As Object
  Set FSO = CreateObject("Scripting.FileSystemObject")
   
  Dim HistoryDir As String
  HistoryDir = ThisWorkbook.Path & "¥" & HISTORYDIR_RELATIVE
   
  Dim FileName As String
  FileName = HistoryDir & "¥" & _
             FSO.GetBaseName(ThisWorkbook.Name) & "_" & DateString & _
             "." & FSO.GetExtensionName(ThisWorkbook.Name)
  
  If Dir(HistoryDir, vbDirectory) = "" Then
    MkDir HistoryDir
  End If
  
  FSO.CopyFile ThisWorkbook.FullName, FileName
End Sub

使い方

通常の「保存」操作をするだけです。

自動的に、

  • 保存前のファイルが
  • 「元のファイル名_YYYYMMDDHHMMSS.元の拡張子」というファイル名で
  • 元々のブックがあるフォルダの「.history」フォルダに

保存されます。