開発中のマクロで、こまめに保存しておきたいケースがあったのでコードを書いてみた。
これは開発中のブックに埋め込んで利用する前提。私は標準モジュール「DevTools」に保存して使っている。
Sub BackupFile()'Microsoft Scripting Runtimeへの参照設定が必要Dim fso As FileSystemObject: Set fso =New FileSystemObject With ThisWorkbook Dim f As File: Set f = fso.GetFile(.FullName)Dim backupFolderPath AsString: backupFolderPath _=.Path &"\backup_"&Left(f.Name,Len(f.Name)-Len(fso.GetExtensionName(f.Path))-1)IfNot fso.FolderExists(backupFolderPath)Then fso.CreateFolder backupFolderPath .SaveCopyAs backupFolderPath &"\"&Format(Now,"yyyymmddhhMMss")&"_"&.NameEndWithEndSub
実行すると、そのブックと同じパスにbackup_[ブック名(拡張子除く)]というフォルダーが作成され、編集中のブックのコピーが保存される。
ファイル名は秒単位なので1秒に複数回実行すると古いコピーが上書きされてしまうことに注意。
(そんな頻度で実行するシチュエーションは無いと思うが)
いつもなら少し大掛かりなマクロではGitHubを使ってバージョン管理するんだけど、今回はブック本体に公開できない情報を含むので、ファイルのコピーを残すという原始的なバックアップに頼ることにした。
このくらいのコードならTwitterに投稿しようとしたら文字数限界だったので記事にした次第。