このページでは下表のプロパティについて説明します。これらはすべて ファイルオブジェクトのプロパティになります。
内容 | プロパティ |
---|---|
ファイル名取得・設定 | file.Name |
ファイル属性取得・設定 | file.Attributes |
ファイルパス取得 | file.Path |
ファイルサイズ取得 | file.Size |
ファイルタイプ取得 | file.Type |
ファイル作成日時取得 | file.DateCreated |
ファイル最終アクセス日時取得 | file.DateLastAccessed |
ファイル最終更新日時取得 | file.DateLastModified |
親フォルダ取得 | file.ParentFolder |
ドライブ名取得 | file.Drive |
使用方法
上記のプロパティを使用するには、以下に示すいずれかの方法で事前にファイルオブジェクトを取得しておく必要があります。
- fso.GetFile を使用し、ファイルのパスからファイルオブジェクトを取得します。
⇒ 『 ファイルオブジェクトの取得 』 参照 - fso.GetFolder によりフォルダオブジェクトを取得します。 その取得したフォルダオブジェクトの Files プロパティ(folder.Files)によりファイルオブジェクトのコレクションを取得し、ループ処理などでそれぞれのファイルオブジェクトへアクセスします。
⇒ 当ページ下の使用例『ファイル情報を表示する例』参照
各プロパティの説明
file.Name
ファイル名の取得および変更ができます。
以下のサンプルマクロはファイル名を変更する例です。
Dim fso As Object
Dim fileObj As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileobj = fso.GetFile("C:¥Users¥xxx¥Desktop¥test.txt")
fileobj.Name = "test_bk.txt" 'ファイル名変更
'オブジェクト変数クリア
Set fso = Nothing
Set fileObj = Nothing
file.Attributes
ファイル属性を取得します。一部の属性(下表の『設定可否』に”○”がついている属性)については値の変更も可能です。
定数 | 値 | 説明 | 設定可否 |
---|---|---|---|
Normal | 0 | 標準ファイル(既定値) | – |
ReadOnly | 1 | 読み取り専用ファイル | ○ |
Hidden | 2 | 隠しファイル | ○ |
System | 4 | システム ファイル ※Windowsのみ |
○ |
Volume | 8 | ボリューム ラベル ※Windowsのみ |
× |
Directory | 16 | フォルダ | × |
Archive | 32 | バックアップ後の変更有無 ※Windowsのみ |
○ |
Alias | 64 | エイリアス ファイル ※Macintoshのみ |
× |
Compressed | 128 | 圧縮ファイル | × |
以下のサンプルマクロはファイル属性が読み取り専用かどうかチェックし、読み取り専用でなければ読み取り専用にする例です。
Dim fso As Object
Dim fileObj As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileobj = fso.GetFile("C:¥Users¥xxx¥Desktop¥test.txt")
'読み取り専用(値=1)かどうかのチェックする。
'読み取り専用でない場合は読み取り専用の属性を追加する。
if fileobj.Attributes and 1 then
Debug.Print "読み取り専用です。"
Else
fileobj.Attributes = fileobj.Attributes + 1
Debug.Print "読み取り専用に設定しました。"
End If
'オブジェクト変数クリア
Set fso = Nothing
Set fileObj = Nothing
file.Path
ファイルのフルパスを取得します。
file.Size
ファイルのサイズをバイト単位で取得します。キロバイト単位にするには 2^10 = 1024、メガバイト単位にするには 1024*1024 で除算します。
file.Type
ファイルのタイプを取得します。テキストドキュメントなら”Text Document”、エクセルブック(.xlsx)なら”Microsoft Office Excel ワークシート”、マクロ有効ブック(.xlsm)なら”Microsoft Office Excel マクロ有効ワークシート”、ワード文書なら”Microsoft Office Word 文書”となります。
file.DateCreated
ファイルの作成日時を取得します。取得する日時の形式はパソコンの設定に依存します。Windows7 の場合、コントロールパネルの [ 地域と言語 ] から設定を確認することができます。取得した日時の形式と照らし合わせてみたところ、 日付(短い形式)+時刻(長い形式) となっていました。
file.DateLastAccessed
ファイルの最終アクセス日時を取得します。日時の取得形式については前述のとおりです。
file.DateLastModified
ファイルの最終更新日時を取得します。日時の取得形式については前述のとおりです。
file.ParentFolder
ファイルが格納されているフォルダパスを取得します。
Dim fso As Object
Dim fileObj As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileobj = fso.GetFile("C:¥Users¥xxx¥Desktop¥test.txt")
Debug.Print fileobj.ParentFolder
'オブジェクト変数クリア
Set fso = Nothing
Set fileObj = Nothing
file.Drive
ファイルが格納されているドライブ名を取得します。ネットワーク上のフォルダに格納されている場合は、ネットワーク共有名( ¥¥[サーバー名]¥[共有フォルダ名] )を取得します。
Dim fso As Object
Dim fileObj As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Set fileobj = fso.GetFile("C:¥Users¥xxx¥Desktop¥test.txt")
Debug.Print fileobj.Drive
'オブジェクト変数クリア
Set fso = Nothing
Set fileObj = Nothing
ファイル情報を表示する例
カレントフォルダ内のファイル情報(ファイル名、最終更新日時、ファイルサイズ、読み取り専用、隠しファイル)をアクティブシートに一覧表示する例です。
Sub sample_fs022_01()
Dim fso As Object
Dim fileObj As Object
Dim folderObj As Object
Dim myFolder As String
Dim myRow As Long
Set fso = CreateObject("Scripting.FileSystemObject")
myFolder = "." '"." はカレントフォルダを意味します。
'フォルダオブジェクトの取得
Set folderObj = fso.GetFolder(myFolder)
'ヘッダーの編集
myRow = 1
Cells(myRow, 1).Value = "ファイル名"
Cells(myRow, 2).Value = "最終更新日時"
Cells(myRow, 3).Value = "サイズ(Byte)"
Cells(myRow, 4).Value = "読み取り専用"
Cells(myRow, 5).Value = "隠しファイル"
For Each fileObj In folderObj.Files
myRow = myRow + 1
With fileObj
Cells(myRow, 1).Value = .Name
'自動的に書式が変更されるのを防ぐため、先頭に"'"を付与
Cells(myRow, 2).Value = "'" & .DateLastModified
Cells(myRow, 3).Value = .Size
'読み取り専用属性チェック
If .Attributes And 1 Then
Cells(myRow, 4).Value = "○"
Else
Cells(myRow, 4).Value = "×"
End If
'隠しファイル属性チェック
If .Attributes And 2 Then
Cells(myRow, 5).Value = "○"
Else
Cells(myRow, 5).Value = "×"
End If
End With
Next
'使用済みセル範囲のセル幅を自動調整
ActiveSheet.UsedRange.Columns.AutoFit
'オブジェクト変数のクリア
Set fso = Nothing
Set fileObj = Nothing
Set folderObj = Nothing
End Sub
fso.GetFolder For Each…Next
Withステートメント Setステートメント
ワークシート内の使用済み領域(UsedRange)
下図がカレントフォルダの状態です。カレントフォルダにはテキストファイル、ワードファイル、エクセルファイルの3つがあります。
“aaa.txt” だけファイル属性を”読み取り専用”かつ”隠しファイル”にしてあります。
上記のサンプルマクロを実行するとアクティブシートにファイル情報が表示されます。