大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAを使ってフォルダとファイルのバックアップを作成する方法をご紹介します。FileSystemObjectのCopyFolderとCopyFileを使ってバックアップを作成する方法になります。『現在の日付と時刻』でバックアップを作成すればファイル名やフォルダ名が被らないのでおすすめです。

はじめに

こちらの記事では、Excel VBAでフォルダファイルバックアップする方法についてご紹介します。

FileSystemObject』の『CopyFolder』と『CopyFile』を使えばフォルダとファイルをバックアップすることができます。

フォルダやファイルを定期的にバックアップする作業があるといった場合はExcel VBAで効率化できるかと思います。

こちらの記事でわかることです。

この記事を読むとわかること

  • Excel VBAでフォルダをバックアップする方法がわかります
  • Excel VBAでファイルをバックアップする方法がわかります

目次から見たい項目へ移動すると便利ですよ。

目次

Excel VBAでフォルダのバックアップ作成

まずはExcel VBAでフォルダをバックアップする方法についてご説明します。

フォルダをバックアップするExcel VBAコードはこちらになります。

フォルダのバックアップを作成するVBAコード

最初に『現在の日付と時刻』でフォルダ名を作成し、FileSystemObjectでフォルダコピーをしてバックアップを作成する方法です。

'バックアップ作成(フォルダ)
Sub BackUp_Folder()
        
    Dim FolderName
    FolderName = Now() '現在の日付+現在の
    
    'バックアップ後のフォルダ名を作成
    FolderName = Format(FolderName, "yyyymmddhhmmss")
    
    'バックアップ元とバックアップ後のフォルダパスを設定します
    Dim Moto, Saki
    Moto = ThisWorkbook.Path & "\TEST" 'バックアップ元のフォルダパス
    Saki = ThisWorkbook.Path & "\" & FolderName 'バックアップ後のフォルダパス
    
    '参照設定
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'フォルダをコピーします
    'Moto・・・バックアップ元フォルダ名("C:\○○○\○○○")
    'Saki・・・バックアップ先フォルダ名("C:\○○○\○○○")
    'False・・・上書き禁止(True:上書き許可)
    FSO.CopyFolder Moto, Saki, False
        
End Sub

このコードについて説明していきます。

『現在の日付+時刻』のフォルダ名を作成

最初に『現在の日付+時刻』でフォルダ名を作成して、フォルダパスを作成しています。

Dim FolderName
FolderName = Now() '現在の日付+現在の時刻

'バックアップ後のフォルダ名を作成します
FolderName = Format(FolderName, "yyyymmddhhmmss")

'バックアップ元とバックアップ後のフォルダパスを設定します
Dim Moto, Saki
Moto = ThisWorkbook.Path & "\TEST" 'バックアップ元のフォルダパス
Saki = ThisWorkbook.Path & "\" & FolderName 'バックアップ後のフォルダパス

Now()で『現在の日付と時刻』を取得することができます。

取得したデータを『Format』で文字列の長さを整えて同じ長さにします。文字列の長さを同じすると保存した順番に並んでくれるのであとで確認がしやすくなります。

『"yyyymmddhhmmss"』は左から年、月、日、時、分、秒の順に長さを指定しています。

バックアップ後のフォルダ名が作成できたら、次はフォルダパスを作成します。

『Moto = ThisWorkbook.Path & "\TEST』でバックアップの元フォルダのパスを指定しています。

『ThisWorkbook.Path』でExcel VBAコードが保存されたファイルパスを指定できます。

『Saki = ThisWorkbook.Path & "\" & FolderName』でバックアップ後のフォルダパスを指定しています。

バックアップを作成するフォルダは元のフォルダと同フォルダとしています。バックアップ後のフォルダパスを変えればバックアップを作成するフォルダを自由に決めることができます。

FileSystemObjectのCopyFolderでフォルダコピー

フォルダのバックアップは『FileSystemObject』の『CopyFile』を使って作成することができます。

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")  

'Moto・・・コピー元フォルダ("C:\○○○\○○○")
'Saki・・・コピー先フォルダ("C:\○○○\○○○")
'False・・・上書き禁止(上書き許可:True)
FSO.CopyFolder Moto, Saki, False

最初に『Set FSO = CreateObject("Scripting.FileSystemObject")』で参照設定をしておきます。

FileSystemObjectを使いますよという宣言になります。

あとは、『FSO.CopyFolder Moto, Saki, False』でフォルダをコピーするとフォルダのバックアップが完成です。

Excel VBAを使ったフォルダの作成/コピー/変更/移動/削除についてはでまとめています。

ではフォルダのバックアップの結果を見てみます。

フォルダのバックアップ結果

Excel VBAでフォルダをバックアップしてみます。

こちらがバックアップするフォルダ『TEST』になります。

バックアップするフォルダ

Excel VBAでバックアップするフォルダ

次がバックアップした結果です。

バックアップしたフォルダ

Excel VBAでバックアップ後のフォルダ

『現在の日付+時刻』のフォルダが作成されました。

Excel VBAのコードをボタンを作って登録しておけば、クリック1回で簡単にバックアップフォルダを作成できますのでさらに便利になります。

もちろん手動でフォルダをコピーしてフォルダ名を変えてもいいですが、バックアップを作成するフォルダの階層が元フォルダと違ったりすると面倒ですしいつ保存したかフォルダ名でわかると便利ですね。

つづいてファイルのバックアップ作成方法について説明します。

Excel VBAでファイルのバックアップ作成

ファイルをバックアップするExcel VBAコードについて説明していきます。

ファイルのバックアップを作成するVBAコード

まず、ファイルをバックアップするExcel VBAコードはこちらになります

'バックアップ作成(ファイル)
Sub BackUp_File()
    
    Dim FileName
    FileName = Now() '現在の日付+現在の時刻
    
    'バックアップ後のファイル名を作成します
    FileName = "TEST_" & Format(FileName, "yyyymmddhhmmss") & ".xlsx"
    
    'バックアップ元とバックアップ後のファイル名を設定します
    Dim Moto, Saki
    Moto = ThisWorkbook.Path & "\TEST.xlsx" 'バックアップ元のファイルパス
    Saki = ThisWorkbook.Path & "\" & FileName 'バックアップ後のファイルパス
    
    '参照設定します
    Dim FSO As Object
    Set FSO = CreateObject("Scripting.FileSystemObject")
    
    'フォルダをコピーします
    'Moto・・・バックアップ元ファイル名("C:\○○○\○○○.xlsx")
    'Saki・・・バックアップ先ファイル名("C:\○○○\○○○.xlsx")
    'False・・・上書き禁止(True:上書き許可)
    FSO.CopyFile Moto, Saki, False
        
End Sub

基本的にはフォルダのバックアップとほぼ同じで、『CoypFile』を使う点が違います。

『現在の日付+時刻』を付けたファイル名を作成

ファイルのバックアップの場合も『現在の日付+時刻』でファイル名を作成するとファイル名が被らないので便利です。

フォルダのバックアップと同じように、最初にバックアップ後のファイル名を作成します。

Dim FileName
FileName = Now() '現在の日付+現在の時刻

'バックアップ後のファイル名を作成します
FileName = "TEST_" & Format(FileName, "yyyymmddhhmmss") & ".xlsx"

'バックアップ元とバックアップ後のファイル名を設定します
Dim Moto, Saki
Moto = ThisWorkbook.Path & "\TEST.xlsx" 'バックアップ元のファイルパス
Saki = ThisWorkbook.Path & "\" & FileName 'バックアップ後のファイルパス

フォルダのときと同じように『FileName = Now()』で『現在の日付+時刻』を取得します。

『FileName = "TEST_" & Format(FileName, "yyyymmddhhmmss") & ".xlsx"』でバックアップ後のファイル名を作成します。

作成したファイル名をもとに『ThisWorkbook.Path』を使ってバックアップ元とバックアップ後のファイルパスを作成しています。

次は、ファイルをコピーしてファイルのバックアップを作成します。

FileSystemObjectのCopyFileでファイルコピー

ファイルをコピーしてファイルをバックアップするのでFileSystemObjectの『CopyFile』を使います。

'参照設定します
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")

'フォルダをコピー
'Moto・・・バックアップ元ファイル名("C:\○○○\○○○.xlsx")
'Saki・・・バックアップ先ファイル名("C:\○○○\○○○.xlsx")
'False・・・上書き禁止(True:上書き許可)
FSO.CopyFile Moto, Saki, False

最初に『Set FSO = CreateObject("Scripting.FileSystemObject")』で参照設定します。

あとは、先ほど作成した、バックアップ元とバックアップ後のファイルパスを使って『FSO.CopyFile Moto, Saki, False』でファイルのコピーを作成すれば、バックアップの完了です。

Excel VBAを使ったファイルのコピー/変更/移動/削除についてはでまとめています。

ファイルのバックアップ結果

ではファイルをバックアップした結果を見てみます。

こちらのファイルをバックアップします。

バックアップするファイル

Excel VBAでバックアップするファイル

ファイルをバックアップした結果です。

バックアップしたファイル

Excel VBAでバックアップしたファイル

『現在の日付+時刻』のフォルダが作成されていることがわかります。

おわりに

今回はフォルダとファイルをバックアップする方法についてご紹介しました。

FileSystemObjectを使ってフォルダやファイルをコピーすればバックアップを作成することができます。

バックアップを作成する際はフォルダ名やファイル名が被らないように『現在の日付+時刻』をフォルダ名にしたりファイル名に追加すると便利です。

最後までお読みいただきありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す