Categories: VBA基礎

EXCEL VBA ファイル名の属性・ファイルの属性を調べる「作成日時・修正日時・サイズ・タイプ」・(ファイルの操作)一覧表示

 

 

EXCEL VBA ファイル名の属性・ファイルの属性を調べる「作成日時・修正日時・ファイルのサイズ・ファイルの種類」(ファイルの操作)一覧表示

 

 

●はじめに
社内業務で色々なファイルを取り扱う事があると思いますが、今回は、ファイルの属性をEXCEL VBAプログラムを使い情報を習得する方法の説明をいたします。普段ファイルのプロパティで属性を調べる事ができますが、EXCEL VBAでは、「FileSystemObject」を使い、ファイルの作成日時・修正日時などの情報を取得する事ができます。それでは、サンプルプログラムを交えて説明いたします。

 

 

●書式の説明 (Fileオブジェクトの利用)

これから説明しますサンプルプログラムは、「FileSystemObject」を使いファイルの作成日時・修正日時などを取得しますので、必ず下記のFileSystemObjectの設定方法(参照設定)を行って下さい。

●Fileオフジェクトの参照設定方法

Set オフジェクト変数 = FileSystemObject.Getfile(パス付ファイル名)

Fileオブジェクトの利用
.Name ファイル名を取得
.DateCreatedファイルの作成日時を取得
.DateLastModified ファイルの更新日時
.Sizeファイルサイズの取得(バイト単位)
.Pathファイルパスを取得
.Typeファイルの種類を取得

 

 

 

●FileSystemObjectの設定方法(参照設定)

●【FileSystemObject】とは、さまざまなファイルやフォルダー情報を調べたり、ファイルやフォルダーをVBAプログラムで操作する時に、FileSystemObjectを利用して簡単に情報取得や操作を行う事が出来ます。これから説明するプログラムにも利用していますので、必ず下記の通りに設定して下さい。

●FileSystemObjectを利用するための参照設定

【設定方法】
①VBE(Visual Basic Editor)から【ツール】を選択する
②【参照設定】をクリックする
③【参照設定ーVBAProject】の中から「Microsoft Scripting Runtime」にチェックする
④【OK】ボタンをクリックして設定します。

 

 

 

指定したファイル名の属性を取得(ファイル名・作成日時・ファイルサイズ・ファイル種類)

 

 

●プログラム説明 (サンプル①)

下記のサンプルプログラムは、指定したファイルに対してのファイル属性を取得するプログラムです。

【今回取得する属性情報】
・ファイル名
・ファイルの作成日時
・ファイルのサイズ(Byte単位)
・ファイルの種類(ファイルのタイプ)

【下記のプログラムを実行準備】
① シート名を「Sheet1」
② ”C:\DATA\Master1.xlsx” の「フォルダー」と「ファイル」を作成します。

 

 

'
'******** 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」
※選択するファイルを用意する。(なんでも良い)

 

'******** 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シートに表示されました。
(画面クリックして拡大)

 

 

複数指定したフォルダー内の全てのファイル名属性情報を一覧表示する。(ファイル名・作成日時・ファイルの更新日時・ファイルサイズ・ファイル種類・ファイルパス)

 

 

●プログラム説明 (サンプル③)

下記のサンプルプログラムは、ダイアログボックスが表示され、今回は一つのフォルダーを選択します。その複数選択したフォルダー内の全てのファイルの属性情報をEXCELシートに一覧として表示します。大量にファイルデータが有る場合は、とても便利です。

【今回取得する属性情報】
・ファイル名
・ファイルの作成日時
・ファイルの更新日時
・ファイルのサイズ(Byte単位)
・ファイルの種類(ファイルのタイプ)
・ファイルのパス

【下記のプログラムを実行準備】
① シート名を「Sheet1」
※選択するフォルダー・ファイルを用意する。(なんでも良い)

 

'
'******** 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
'

 

 

●実行前~実行後 ※プログラム実行後、ダイアログボックスが表示されフォルダーを選択します。選択したフォルダー内の全てのファイル属性データをEXCELシートに一覧データとして表示されました。
(画面クリックして拡大)

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA