ファイルの作成日と更新日を取得する必要性
バックアップを定期的に取るためのツールを作成することにしたのですが、バックアップ先にファイルを保存していくときに既に同じ名前の古いファイルが存在していた場合、置き換えるのか、それともそのままにするのか判断するためファイルの更新日を比較する必要があることに気づきました。
毎回全部のファイルをコピーすれば良いかもしれませんが、時間かかって面倒ですし、容量がたくさん必要なる可能性があるので、必要最低限のみ保存するだけで済ませるツールにする予定です。
私も今回調べて初めて知ったのですが、FSO(FileSystemObject)を使って意外と簡単に作成日・更新日を取得できるのでご紹介します。
FSO(FileSystemObject)について
以前にこちらでご紹介していますが、ファイル・フォルダを操作するオブジェクトです。
ExcelVBAに標準で搭載されているファイル・フォルダ操作よりもより多様な操作が可能です。
ファイルやフォルダのコピー・削除・移動などの処理が簡単にできます。
個人的にはExcelのワークシートの組み合わせて使用するのが好きで、フォルダ・ファイル一覧を書き出して→決まった処理をする流れでバックアップを作成する予定です。
スポンサーリンク
ファイルの作成日・更新日を取得するVBAコード
ファイルの作成日・更新日を取得するためには調べたいファイルのフルパスが必要です。
デスクトップにある「aaa.xlsx」ファイルの作成日・更新日を取得するサンプルコードは下記の通りです。
Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
MsgBox FSO.GetFile(“C:Users〇〇Desktopaaa.xlsx”).DateCreated
MsgBox FSO.GetFile(“C:Users〇〇Desktopaaa.xlsx”).DateLastModified
Set FSO = Nothing
End Sub
〇〇の部分はユーザー名になります。
これだけでは汎用性がなく、使用しにくいのでユーザー名に関わらずDesktopを指定するWSHを使用したり、Dir関数を用いてフォルダ・ファイル一覧を取得してセルに格納した上で作成日・更新日を取得する流れにすると思います。
フォルダの作成日・更新日を取得するVBAコード
フォルダの作成日・更新日を取得する方法もファイルを取得する場合とほぼ同じで、「GetFile」が「GetFolder」になるだけです。
デスクトップにある「aaa」フォルダの作成日・更新日を取得するサンプルコードは下記の通りです。
サンプルコードは次の通りです。
Dim FSO As Object
Set FSO = CreateObject(“Scripting.FileSystemObject”)
MsgBox FSO.GetFolder(“C:Users〇〇Desktopaaa”).DateCreated
MsgBox FSO.GetFolder(“C:Users〇〇Desktopaaa”).DateLastModified
Set FSO = Nothing
End Sub
コメント