EXCEL VBA ファイル名の属性・ファイルの属性を調べる「作成日時・修正日時・サイズ・タイプ」・(ファイルの操作)一覧表示
EXCEL VBA ファイル名の属性・ファイルの属性を調べる「作成日時・修正日時・ファイルのサイズ・ファイルの種類」(ファイルの操作)一覧表示
これから説明しますサンプルプログラムは、「FileSystemObject」を使いファイルの作成日時・修正日時などを取得しますので、必ず下記のFileSystemObjectの設定方法(参照設定)を行って下さい。
●Fileオフジェクトの参照設定方法
Set オフジェクト変数 = FileSystemObject.Getfile(パス付ファイル名)
Fileオブジェクトの利用 | |
---|---|
.Name | ファイル名を取得 |
.DateCreated | ファイルの作成日時を取得 |
.DateLastModified | ファイルの更新日時 |
.Size | ファイルサイズの取得(バイト単位) |
.Path | ファイルパスを取得 |
.Type | ファイルの種類を取得 |
●【FileSystemObject】とは、さまざまなファイルやフォルダー情報を調べたり、ファイルやフォルダーをVBAプログラムで操作する時に、FileSystemObjectを利用して簡単に情報取得や操作を行う事が出来ます。これから説明するプログラムにも利用していますので、必ず下記の通りに設定して下さい。
●FileSystemObjectを利用するための参照設定
【設定方法】
①VBE(Visual Basic Editor)から【ツール】を選択する
②【参照設定】をクリックする
③【参照設定ーVBAProject】の中から「Microsoft Scripting Runtime」にチェックする
④【OK】ボタンをクリックして設定します。
指定したファイル名の属性を取得(ファイル名・作成日時・ファイルサイズ・ファイル種類)
下記のサンプルプログラムは、指定したファイルに対してのファイル属性を取得するプログラムです。
【今回取得する属性情報】
・ファイル名
・ファイルの作成日時
・ファイルのサイズ(Byte単位)
・ファイルの種類(ファイルのタイプ)
【下記のプログラムを実行準備】
① シート名を「Sheet1」
② ”C:\DATA\Master1.xlsx” の「フォルダー」と「ファイル」を作成します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
' '******** AKIRA55.COM ******* https://akira55.com/file_attributes ' ' Sub file_attributes01() '選択したファイルの属性を表示じます。 Dim File_function As New Scripting.FileSystemObject Dim SetFile As Scripting.File Dim ws01 As Worksheet Dim FolderName As String Set ws01 = Worksheets("Sheet1") FolderName = "C:\DATA\Master1.xlsx" '保存されている保存先(ファイル) Set SetFile = File_function.GetFile(FolderName) '選択ファイルをFileオフジェクトとして登録 MsgBox "ファイル名:" & SetFile.Name & vbCrLf _ & "ファイルの作成日時:" & SetFile.DateCreated _ & vbCrLf & "ファイルのサイズ(Byte):" & SetFile.Size _ & vbCrLf & "ファイルタイプ:" & SetFile.Type 'メッセージボックスにファイル名・作成日時・ファイルサイズ・ファイルタイプを表示します。 End Sub ' |
(画面クリックして拡大)
複数指定したファイル名の属性情報を一覧表示する。(ファイル名・作成日時・ファイルの更新日時・ファイルサイズ・ファイル種類・ファイルパス)
下記のサンプルプログラムは、ダイアログボックスが表示され、ファイルを複数選択します。その複数選択したファイルの属性情報をEXCELシートに一覧として表示します。
【今回取得する属性情報】
・ファイル名
・ファイルの作成日時
・ファイルの更新日時
・ファイルのサイズ(Byte単位)
・ファイルの種類(ファイルのタイプ)
・ファイルのパス
【下記のプログラムを実行準備】
① シート名を「Sheet1」
※選択するファイルを用意する。(なんでも良い)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
'******** AKIRA55.COM ******* https://akira55.com/file_attributes ' ' Sub file_attributes02() '複数選択したファイルの属性を一覧表示じます。 Dim File_function As New Scripting.FileSystemObject Dim SetFile As Scripting.File Dim lRow, I, F As Long Dim FolderName As String Dim FileName As Variant Dim ws01 As Worksheet Set ws01 = Worksheets("Sheet1") FileName = Application.GetOpenFilename(MultiSelect:=True) 'ダイアログボックスが表示(MultiSelect:=Trueでファイルを複数選択) If UBound(FileName) > 0 Then '選択したファイルが0件を超える場合は実行 FolderName = File_function.GetParentFolderName(FileName(1)) '選択した最初のファイル名からフォルダーまでのルートを取得する Else MsgBox "作業をキャンセルされました" Exit Sub 'プログラムを終了 End If lRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得 ws01.Range("A2:F" & lRow + 1).ClearContents 'A列~F列のデータ(文字列のみ)をクリアー F = 1 '選択ファイルの1件目を設定 For I = 2 To 1 + UBound(FileName) '選択したファイルの数を繰り返す。(最大値) Set SetFile = File_function.GetFile(FileName(F)) 'ファイルをFileオフジェクトとして登録 ws01.Range("A" & I) = SetFile.Name 'ファイル名 ws01.Range("B" & I) = SetFile.DateCreated 'ファイルの作成日時 ws01.Range("C" & I) = SetFile.DateLastModified 'ファイルの更新日時 ws01.Range("D" & I) = SetFile.Size 'ファイルサイズ ws01.Range("E" & I) = SetFile.Type 'ファイルの種類 ws01.Range("F" & I) = SetFile.Path 'ファイルパス F = F + 1 '次のファイル名を指定するために+1加算する。 Next I End Sub |
(画面クリックして拡大)
複数指定したフォルダー内の全てのファイル名属性情報を一覧表示する。(ファイル名・作成日時・ファイルの更新日時・ファイルサイズ・ファイル種類・ファイルパス)
下記のサンプルプログラムは、ダイアログボックスが表示され、今回は一つのフォルダーを選択します。その複数選択したフォルダー内の全てのファイルの属性情報をEXCELシートに一覧として表示します。大量にファイルデータが有る場合は、とても便利です。
【今回取得する属性情報】
・ファイル名
・ファイルの作成日時
・ファイルの更新日時
・ファイルのサイズ(Byte単位)
・ファイルの種類(ファイルのタイプ)
・ファイルのパス
【下記のプログラムを実行準備】
① シート名を「Sheet1」
※選択するフォルダー・ファイルを用意する。(なんでも良い)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
' '******** AKIRA55.COM ******* https://akira55.com/file_attributes ' ' Sub file_attributes03() '選択したフォルダー内のファイル一覧の属性を表示します。 Dim File_function As New Scripting.FileSystemObject Dim SetFile As Scripting.File Dim F As Object Dim lRow, I As Long Dim FolderName, FolderRoot As String Dim FileName As Variant Dim ws01 As Worksheet Set ws01 = Worksheets("Sheet1") With Application.FileDialog(msoFileDialogFolderPicker) 'ダイアログボックスを表示してフォルダーを選択します。 If .Show = 0 Then Exit Sub 'プログラムを終了 (フォルダーが選択されていない。もしくはキャンセル) Set FolderName = File_function.GetFolder(.SelectedItems(1)) '選択したフォルダー名をセットします。 End With lRow = ws01.Cells(Rows.Count, "A").End(xlUp).Row 'A列の最終行を取得 ws01.Range("A2:F" & lRow + 1).ClearContents 'A列のデータ(文字列のみ)をクリアー I = 2 For Each F In File_function.GetFolder(FolderName).Files 'フォルダー内の全てのファイルを順番に繰り返します。 Set SetFile = File_function.GetFile(F) 'フォルダー内のファイルをひとつずつセットします。 ws01.Range("A" & I) = SetFile.Name 'ファイル名 ws01.Range("B" & I) = SetFile.DateCreated 'ファイルの作成日時 ws01.Range("C" & I) = SetFile.DateLastModified 'ファイルの更新日時 ws01.Range("D" & I) = SetFile.Size 'ファイルサイズ ws01.Range("E" & I) = SetFile.Type 'ファイルの種類 ws01.Range("F" & I) = SetFile.Path 'ファイルパス I = I + 1 '次の行に+1加算する。 Next F '全てのファイルが終了まで繰り返します。 End Sub ' |
(画面クリックして拡大)
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。