エクセルシートの履歴を自動管理する(超簡易版)
エクセルファイルのバージョン管理をするために、
- 新しく作ったファイルを「別名で保存する」
- 元々あるファイル名を変更する
のどちらかで対応するケースは多いと思います。
ただ、いちいち別名で保存するのは面倒ですし、「別名保存」「ファイル名変更」をし忘れると大変です。
そこで、自動的に履歴を記録する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」フォルダに
保存されます。