サイトについて      連絡先   検索

VBA ファイルの作成日時や更新日時を取得または変更する

はじめに

Excel VBA でファイルの作成日時や更新日時を取得または変更する方法を紹介します。

DateLastModified プロパティなどを使って、作成日時や更新日時の取得または設定ができます。

フォルダ内のファイル一覧から指定したファイルのみ設定できます。

FileSystemObject について

ここでは VBA の標準の関数より便利な FileSystemObject を使った方法を紹介しています。基本的な使い方については「FileSystemObject ファイル操作の基礎」をご覧ください。

コードを見やすくするため FileSystemObject を参照設定しています。また、エラー処理は行っていません。

ファイルの日時を取得または変更する

ファイルの日時を取得


Dim fso As FileSystemObject
Set fso = New FileSystemObject ' インスタンス化

Dim f As File
Set f = fso.GetFile("D:\Tips.txt") ' ファイルを取得

Dim d As Date

d = f.DateCreated      ' 作成日時を取得
Debug.Print (d)

d = f.DateLastModified ' 更新日時を取得
Debug.Print (d)

d = f.DateLastAccessed ' アクセス日時を取得
Debug.Print (d)

' 後始末
Set fso = Nothing

fso.GetFile関数で指定したパスの File オブジェクトを取得します。ファイルが存在しないときはエラーが発生します。

f.DateCreatedプロパティから、作成日時を取得できます。

f.DateLastModifiedプロパティから、更新日時を取得できます。

f.DateLastAccessedプロパティから、アクセス日時を取得できます。

ファイルに日時を設定

FileSystemObject や VBA の標準機能には日時を変更する機能はありません。代わりに Shell.Application を使って更新日時の変更ができます。それ以外の作成日時などは変更できません。


Dim shell As Object
Set shell = CreateObject("Shell.Application") ' インスタンス化

Dim fl As Object
Set fl = shell.Namespace("D:\")  ' フォルダを取得

Dim f As Object
Set f = fl.ParseName("Tips.txt") ' フォルダ内のファイルを取得

f.ModifyDate = Now ' 更新日時を変更

' 後始末
Set f = Nothing
Set fl = Nothing
Set shell = Nothing

CreateObject 関数でShell.Applicationオブジェクトのインスタンスを生成します。

shell.Namespace関数でフォルダを取得できます。

fl.ParseName関数でそのフォルダ内にあるファイルを取得できます。

f.ModifyDateプロパティから、更新日時を取得または変更できます。

フォルダ内のファイルの日時を取得


Dim fso As FileSystemObject
Set fso = New FileSystemObject

Dim fl As Folder
Set fl = fso.GetFolder("D:\") ' フォルダを取得

Dim fileName As String
Dim f As File
For Each f In fl.Files ' フォルダ内のファイルを取得
    If f.Name = "Tips.txt" Then  ' 日時を取得したいファイル
        Dim d As Date
        d = f.DateCreated      ' 作成日時を取得
        d = f.DateLastModified ' 更新日時を取得
        d = f.DateLastAccessed ' アクセス日時を取得
    End If
Next

' 後始末
Set fso = Nothing

fso.GetFolder関数で、指定したパスの Folder オブジェクトを取得します。フォルダが存在しないときはエラーが発生します。

fl.Filesプロパティから、そのフォルダの File オブジェクトの一覧を取得できます。

f.DateCreatedf.DateLastModifiedf.DateLastAccessedプロパティから、日時の取得ができます。

関連ページ