Excel VBAを使用したログオフ時の自動バックアップ方法

この記事では、Excel VBAを利用して、ログオフ時にExcelファイルを自動バックアップする方法について詳しく解説します。Excelのデータは日常的に多くの変更が加えられることがあり、バックアップは非常に重要です。この機能を使うことで、毎回手動でバックアップを取る手間を減らし、データの安全性を向上させることができます。

目次

Excel VBAの基本

Excel VBA(Visual Basic for Applications)は、Microsoft Excelに組み込まれたプログラミング言語です。これを用いると、単純作業の自動化だけでなく、高度なデータ分析やレポート作成も可能になります。

そもそも、どこにVBAコードを書いて、どう実行すれば良いのか分からない場合は、以下の記事をご参照ください。

VBAを利用した自動バックアップの基本

Excel VBAを利用すると、特定のイベントや操作をトリガーにして、任意のVBAのマクロを実行させることができます。このセクションでは、ログオフ時にExcelファイルを自動でバックアップする基本的なコードとその動作原理を解説します。


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim BackupPath As String
    BackupPath = "C:\Backup\" & ThisWorkbook.Name
    ThisWorkbook.SaveCopyAs BackupPath
End Sub

コードの詳細解説

上記のVBAコードは、ユーザーがExcelファイルを閉じる際(ログオフ時も含む)に自動的に実行される`Workbook_BeforeClose`イベントを利用しています。このイベント内で行われている処理は以下の通りです。

1. `BackupPath`という文字列型の変数を定義しています。これはバックアップファイルの保存先のパスを指定するためのものです。
2. `BackupPath`変数に、”C:\Backup\”というディレクトリパスと、現在のワークブックの名前(`ThisWorkbook.Name`)を組み合わせて、フルパスを生成しています。
3. `ThisWorkbook.SaveCopyAs`メソッドを利用して、上記で生成したパスに現在のワークブックのコピーを保存します。これがバックアップの主要な処理部分です。

応用例

Excel VBAの自動バックアップの処理は、さまざまな応用が考えられます。以下にいくつかの応用例を示します。

応用例1:バックアップの保存先を動的に指定する

ユーザーごとに異なる保存先にバックアップを保存したい場合、保存先のパスを動的に生成することが可能です。


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim BackupPath As String
    BackupPath = "C:\Backup\" & Environ("USERNAME") & "\" & ThisWorkbook.Name
    ThisWorkbook.SaveCopyAs BackupPath
End Sub

このコードでは、`Environ(“USERNAME”)`を利用して、現在のユーザーの名前を取得し、その名前のフォルダの中にバックアップを保存します。

応用例2:バックアップを日付ごとに保存する

バックアップの保存先を日付ごとに分けることで、過去のデータを特定の日付で参照することが可能になります。


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim BackupPath As String
    BackupPath = "C:\Backup\" & Format(Date, "YYYYMMDD") & "\" & ThisWorkbook.Name
    ThisWorkbook.SaveCopyAs BackupPath
End Sub

応用例3:特定のシートだけをバックアップする

ワークブック全体ではなく、特定のシートだけをバックアップとして保存することも可能です。


Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim BackupPath As String
    BackupPath = "C:\Backup\" & ThisWorkbook.Name
    ThisWorkbook.Sheets("Sheet1").Copy
    ActiveWorkbook.SaveAs BackupPath
    ActiveWorkbook.Close
End Sub

このコードでは、”Sheet1″という名前のシートだけを新しいワークブックとしてコピーし、それをバックアップとして保存しています。

まとめ

Excel VBAを利用してログオフ時に自動でバックアップを取る機能は、データの安全性を向上させるための非常に便利な手段です。基本的なコードからさまざまな応用例まで、この機能を活用して、日々の業務をより安全かつ効率的に進めることができます。

VBAも良いけどパワークエリも良い

VBAの解説をしてきましたが、VBAは正直煩雑でメンテナンス性が悪いです。最近はモダンExcelと呼ばれるパワークエリやパワーピボットへのシフトが進んできています。本サイトでもパワークエリの特集をしており、サンプルデータを含む全11回の学習コンテンツでパワークエリを習得することができます。

クリックするとパワークエリの全11講座が表示されます。

パワーピボットの記事はありません。興味がある場合は、書籍で学んでみてください

コメント

コメントする

目次