Sub TEST1()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim A, B
A = ThisWorkbook.Path & "\TEST" '元フォルダ
B = ThisWorkbook.Path & "\バックアップ" 'バックアップフォルダ'フォルダのバックアップを作成する
FSO.CopyFolder A, B, False
End Sub
「TEST」というフォルダをバックアップしてみます。
「TEST」というフォルダを用意
実行すると、「バックアップ」というフォルダにバックアップできます。
フォルダをバックアップできた
「バックアップ」というフォルダにバックアップできました。
「日付+時刻」を付けてバックアップする
ファイル名に、「日付+時刻」を付けてバックアップしてみます。
日付と時刻は「Now()」を使うと取得することができます。
桁数を同じにしたいので、「Format」で形を整えます。
Sub TEST2()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim A, B
A = ThisWorkbook.Path & "\TEST" '元フォルダ'バックアップフォルダに「日付+時刻」を追加
B = ThisWorkbook.Path & "\TEST_" & Format(Now(), "yyyymmdd-hhmmss")
'フォルダのバックアップを作成する
FSO.CopyFolder A, B, False
End Sub
Sub TEST3()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim A, B
A = ThisWorkbook.Path & "\TEST.xlsx" '元ファイル
B = ThisWorkbook.Path & "\バックアップ.xlsx" 'バックアップファイル'ファイルのバックアップを作成する
FSO.CopyFile A, B, False
End Sub
「TEST.xlsx」というファイルを、バックアップしてみます。
「TEST.xlsx」を用意
実行すると、「バックアップ.xlsx」というファイル名で、バックアップできます。
ファイルをバックアップできた
「バックアップ.xlsx」というファイル名で、バックアップできました。
「日付+時刻」を付けてバックアップする
次は、「日付+時刻」を付けて「ファイル」をバックアップしてみます。
「Now()」で日付と時刻を取得して、「Format」で形を整える、という感じです。
Sub TEST4()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim A, B
A = ThisWorkbook.Path & "\TEST.xlsx" '元ファイル'バックアップファイルに「日付+時刻」を付ける
B = ThisWorkbook.Path & "\TEST_" & Format(Now(), "yyyymmdd-hhmmss") & ".xlsx"
'ファイルのバックアップを作成する
FSO.CopyFile A, B, False
End Sub
「TEST.xlsx」というファイルを、「日付+時刻」を付けてバックアップしてみます。
「TEST.xlsx」を用意
実行すると、「TEST.xlsx」というファイルを、「日付+時刻」を付けてバックアップできます。
「日付+時刻」を付けて、ファイルをバックアップできた
「TEST.xlsx」というファイルを、「日付+時刻」を付けてバックアップできました。
VBAで作業ファイルのバックアップを作成する
VBAで「作業ファイル」のバックアップを作成してみます。
自身のファイルのコピーを作成する、という感じです。
作業しているファイルをバックアップする
作業しているファイルをバックアップするには、「.CopyFile」を使います。
作業しているファイルは「ThisWorkbook.FullName」でフルパスを取得できます。
作業しているファイルの「拡張子を含まないファイル名」は、「.GetBaseName」で取得します。
Sub TEST5()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim A, B
A = ThisWorkbook.FullName '作業しているファイル'バックアップファイルに「日付+時刻」を付ける
B = ThisWorkbook.Path & "\" & FSO.GetBaseName(A) & "_" & Format(Now(), "yyyymmdd-hhmmss") & ".xlsm"
'ファイルのバックアップを作成する
FSO.CopyFile A, B, False
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Call TEST6
End Sub
実行するVBAコードは先ほどと同じで、作業ファイルのバックアップを作成するVBAコードになります。
Sub TEST6()
Dim FSO
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim A, B
A = ThisWorkbook.FullName '作業しているファイル'バックアップファイルに「日付+時刻」を付ける
B = ThisWorkbook.Path & "\" & FSO.GetBaseName(A) & "_" & Format(Now(), "yyyymmdd-hhmmss") & ".xlsm"
'ファイルのバックアップを作成する
FSO.CopyFile A, B, False
End Sub