フォルダ内に存在する全「.xlsx」ファイルのベース名を取得する


「C:\Tmp」フォルダ内に存在する全「.xlsxx」ファイルのベース名をアクティブシートに出力します。汎用性を高めるために、一度配列へ格納しています。もし「Book1.XLSX」のように拡張子が大文字のファイルが存在したときのために、全ファイルの拡張子をGetExtensionNameメソッドを使って「xlsx」かどうか判定するとき、LCase関数でファイル名を小文字に変換しています。

Sub Sample07()
    Dim FSO As Object, f As Variant, BaseNames() As String, cnt As Long, i As Long
    Set FSO = CreateObject("Scripting.FileSystemObject")
    ReDim BaseNames(FSO.GetFolder("C:\Tmp\").Files.Count)
    For Each f In FSO.GetFolder("C:\Tmp\").Files
        If LCase(FSO.GetExtensionName(f.Name)) = "xlsx" Then
            cnt = cnt + 1
            BaseNames(cnt) = FSO.GetBaseName(f.Name)
        End If
    Next f
    If cnt = 0 Then
        MsgBox "xlsxファイルはありません", vbExclamation
    Else
        For i = 1 To cnt
            Cells(i, 1) = BaseNames(i)
        Next i
    End If
    Set FSO = Nothing
End Sub