大体でIT

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

大体でIT

Excel VBAで、フォルダやファイルをバックアップするには、「FileSystemObject」の「.CopyFolder」や「.CopyFile」を使うとできます。バックアップを作成する際は、名前に「日付+時刻」を付けると便利です。VBAで、バックアップ作業を自動化していきましょう。

はじめに

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

フォルダやファイルをバックアップするには、「FileSystemObject」の「.CopyFolder」や「.CopyFile」を使うとできます。

バックアップを作成する際は、フォルダ名やファイル名に「日付+時刻」を付けると名前が被らないので、便利です。

VBAを使って、バックアップ作業を自動化していきましょう。

では、フォルダやファイルをバックアップする方法について、解説していきます。

この記事を読むメリット

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

本記事の内容を動画でまとめています

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

目次

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

VBAで、「フォルダ」のバックアップを作成してみます。

フォルダのバックアップを作成する

フォルダのバックアップを作成するには、「.CopyFolder」を使って、フォルダをコピーするとできます。

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」というフォルダを用意

「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

「TEST」というフォルダを、「日付+時刻」を付けてバックアップしてみます。

「TEST」というフォルダを用意

「TEST」というフォルダを、「日付+時刻」を付けてバックアップしてみます

実行すると、「TEST」というフォルダに、「日付+時刻」を付けてバックアップできます。

「日付+時刻」を付けて、フォルダをバックアップできた

「TEST」というフォルダに、「日付+時刻」を付けてバックアップできました

「TEST」というフォルダに、「日付+時刻」を付けてバックアップできました。

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

次は、VBAで「ファイル」のバックアップを作成してみます。

ファイルのバックアップを作成する

ファイルのバックアップを作成するには、「.CopyFile」を使ってファイルをコピーするとできます。

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」を用意

「TEST.xlsx」というファイルを、バックアップしてみます

実行すると、「バックアップ.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」というファイルを、「日付+時刻」を付けてバックアップできます。

「日付+時刻」を付けて、ファイルをバックアップできた

「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

作業しているファイルを、バックアップしてみます。

作業しているファイル

作業しているファイルを、バックアップしてみます

実行すると、作業しているファイルを、バックアップできます。

作業ファイルをバックアップできた

作業しているファイルを、バックアップできました

作業しているファイルを、バックアップできました。

上書き保存前にファイルのバックアップを作成

実務で使えるテクニックで、作業ファイルの「上書き保存前」に、ファイルのバックアップを作成する、というのをやってみます。

上書き保存前に実行するイベント「Workbook_BeforeSave」を使います。

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

作業しているファイルで上書き保存する前に、バックアップを作成してみます。

作業ファイルを保存してみる

作業しているファイルで上書き保存する前に、バックアップを作成してみます

実行すると、作業しているファイルを上書き保存する前に、バックアップを作成できます。

上書き保存前にバックアップできた

作業しているファイルを上書き保存する前に、バックアップを作成できました

作業しているファイルを上書き保存する前に、バックアップを作成できました。

実務で、バックアップを作成しながら作業したい場合に使えます。

おわりに

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

フォルダやファイルをバックアップするには、「FileSystemObject」の「.CopyFolder」や「.CopyFile」を使うとできます。

バックアップを作成する際は、フォルダ名やファイル名に「日付+時刻」を付けると名前が被らないので、便利です。

VBAを使って、バックアップ作業を自動化していきましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

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

サイト内を検索する

↓キーワードを入力する

アーカイブから探す