「エクセル 拡張子なし ファイル一覧 getfolder」
といった検索キーワードに気づきました。
FileSystemObjectオブジェクトの、GetFolderメソッドで取得したフォルダーに含まれるファイルの、拡張子なしの名前を一覧にするExcel VBAのコードを探していらしたのでしょうか。
「excel vba filesystemobject ファイル名 拡張子なし」
という検索キーワードも同じようなコードを探していらしたのでしょう。
拡張子なしのファイル名一覧を取得するサンプルマクロ
参照設定が行われている環境で以下のSubプロシージャを実行すると、「C:\TEMP」フォルダーに含まれるファイルの、拡張子なしの名前がイミディエイトウィンドウに出力されます。
Const PATH_ = "C:\TEMP"
Dim fso As Scripting.FileSystemObject
Dim f As Scripting.File
Set fso = New Scripting.FileSystemObject
For Each f In fso.GetFolder(PATH_).Files
Debug.Print fso.GetBaseName(f.Name)
Next f
Set fso = Nothing
End Sub
拡張子なしの名前を取得する、BaseNameといった名前のプロパティが、Scripting.Fileオブジェクトに用意されていても良さそうに感じるのですが、そのようなプロパティは見当たらないので、
FileSystemObjectオブジェクトのGetBaseNameメソッドを利用しています。
拡張子なしのファイル名一覧を作成するサンプルマクロ
イミディエイトウィンドウに出力するのではなく、シートに一覧を作成するなら以下のようなSubプロシージャでしょう。
Dim path_ As String
Dim fso As Scripting.FileSystemObject
Dim f As Scripting.File
Dim n As Long ' ファイル名を書き出す行番号
path_ = Range("A1").Value
Set fso = New Scripting.FileSystemObject
If Not fso.FolderExists(path_) Then GoTo ErrHndl
n = 2
For Each f In fso.GetFolder(path_).Files
Cells(n, "A").Value = fso.GetBaseName(f.Name)
n = n + 1
Next f
GoTo EndSub
ErrHndl:
MsgBox "A1セルに入力されているフォルダーが見つかりません。"
Set f = Nothing
Set fso = Nothing
End Sub
先ほどのイミディエイトウィンドウに出力するマクロでは、定数でフォルダーのパスを指定していましたが、
Const PATH_ = "C:\TEMP"
このプロシージャでは、シートに一覧を作成するので、A1セルに拡張子なしのファイル名一覧を作成したいフォルダーのパスを、入力しておくようにしています。
path_ = Range("A1").Value
- Newer:VBAでテーブルの列を非表示にしたい
- Older:VBAでシートをPDF保存する
Home » FSO・FileSystemObjectの使い方 » 拡張子なしのファイル名一覧を作成するExcelマクロ-GetBaseNameメソッド