top of page
執筆者の写真yuji fukami

自動的にファイルのバックアップを作成

更新日:1月17日


<概要>


 今回は、自動的にファイルのバックアップを作成する汎用プロシージャを紹介します。


 作成されたバックアップのファイル名は元のファイル名に[YYYYMMDD]の表示形式で日付が付くようになります。


 また保存先のフォルダも引数で選ぶことが可能になっています。


 紹介する汎用プロシージャを「Excelブックの保存時のイベントプロシージャ(Workbook_BeforeSave)」で使用することで、指定のExcelブックの自動バックアップができるようになります。特に重要なExcelブックだったり、開発用アドイン(xlam)などは実行例の処理を追加しておいたほうが良いでしょう。


<用途>


  • 特定ファイルを自動的にバックアップを作成しておく

  • 重要なExcelブックやアドインを自動バックアップを作成する



<プロシージャ紹介>

Public Sub BackupWithDateToFolder(FullPath As String, BackupFolderPath As String)

名前: BackupWithDateToFolder /Subプロシージャ

説明: 指定ファイルを指定フォルダに日付をつけてバックアップ


'引数

'FullPath ・・・バックアップするファイルのフルパス

'BackupFolderPath・・・バックアップ先のフォルダパス


<実行例>


 次のようなコードを用意します。

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
    
    'バックアップするファイルのフルパス(=ThisWorkbook.FullName)
    Dim FullPath As String: FullPath = ThisWorkbook.FullName
    
    'OneDriveを起動中なら次の処理が必要
    FullPath = ConvOneDrivePath_LocalPath(FullPath)
    
    'バックアップ先のフォルダパス(事前にフォルダを作成しておくこと)
    Dim BackupFolderPath As String: BackupFolderPath = "C:\Test"
    
    'バックアップを作成する
    Call BackupWithDateToFolder(FullPath, BackupFolderPath)
        
End Sub

 コードはThisWorkbookオブジェクトにおける保存時イベントプロシージャです。


 コードはサンプルファイルの中に記載しています。

 保存先のフォルダは「C:\Test」としていますが、サンプルファイルの実行結果を確認する際はご自身でこのフォルダを用意してください。


 実行サンプルのファイル名は「BackupWithDateToFolder.xlsm」としています。


 このファイルを起動中に保存するとバックアップ先のフォルダに次のようなファイルが作成されます。


 サンプルコードではOneDriveの影響も考慮して「ConvOneDrivePath_LocalPath」を利用しています。



<サンプルファイル>




<コード>


 Gist

Public Sub BackupWithDateToFolder(ByRef FullPath As String, _
                          ByRef BackupFolderPath As String)
'指定ファイルを指定フォルダに日付をつけてバックアップ
'「Microsoft Scripting Runtime」ライブラリを参照すること
'20211102
'20231217 変更

'参考
'https://www.softex-celware.com/post/BackupWithDateToFolder

'引数
'FullPath        ・・・バックアップするファイルのフルパス
'BackupFolderPath・・・バックアップ先のフォルダパス
    
    '元のファイル名から日付が付いたファイル名を作成
    Dim FSO            As New FileSystemObject
    Dim FileName       As String
    Dim Extension      As String
    Dim BackupFileName As String
    FileName = FSO.GetFileName(FullPath)
    Extension = FSO.GetExtensionName(FullPath)
    BackupFileName = FileName & "_" & _
                     Format(Date, "YYYYMMDD") & _
                     "." & Extension
    
    'バックアップ作成
    Call FSO.CopyFile(FullPath, _
                      BackupFolderPath & "\" & BackupFileName)
    
End Sub

閲覧数:59回0件のコメント

最新記事

すべて表示

OneDriveのhttp形式のパスをローカル上のパスに変換

<概要> 今回は、OneDriveのhttp形式のパスをローカル上のパスに変換する汎用プロシージャを紹介します。 OneDriveを起動中だとThisWorkbook.Path(ThisWorkbookが保存されているフォルダのフルパス)の値がhttp形式になってしまうので...

Kommentare


bottom of page