Home » FSO・FileSystemObjectの使い方 » 拡張子なしのファイル名一覧を作成するExcelマクロ-GetBaseNameメソッド

拡張子なしのファイル名一覧を作成するExcelマクロ-GetBaseNameメソッド

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

拡張子なしのファイル名一覧を

「エクセル 拡張子なし ファイル一覧 getfolder」
といった検索キーワードに気づきました。

FileSystemObjectオブジェクトの、GetFolderメソッドで取得したフォルダーに含まれるファイルの、拡張子なしの名前を一覧にするExcel VBAのコードを探していらしたのでしょうか。

「excel vba filesystemobject ファイル名 拡張子なし」
という検索キーワードも同じようなコードを探していらしたのでしょう。

[スポンサードリンク]

拡張子なしのファイル名一覧を取得するサンプルマクロ

参照設定が行われている環境で以下のSubプロシージャを実行すると、「C:\TEMP」フォルダーに含まれるファイルの、拡張子なしの名前がイミディエイトウィンドウに出力されます。

Sub 拡張子なしのファイル名一覧を取得する()
 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 f = Nothing
 Set fso = Nothing
End Sub

拡張子なしの名前を取得する、BaseNameといった名前のプロパティが、Scripting.Fileオブジェクトに用意されていても良さそうに感じるのですが、そのようなプロパティは見当たらないので、

拡張子なしのファイル名一覧を

FileSystemObjectオブジェクトのGetBaseNameメソッドを利用しています。

拡張子なしのファイル名一覧を

拡張子なしのファイル名一覧を作成するサンプルマクロ

イミディエイトウィンドウに出力するのではなく、シートに一覧を作成するなら以下のようなSubプロシージャでしょう。

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セルに入力されているフォルダーが見つかりません。"

EndSub:
 Set f = Nothing
 Set fso = Nothing
End Sub

先ほどのイミディエイトウィンドウに出力するマクロでは、定数でフォルダーのパスを指定していましたが、
 Const PATH_ = "C:\TEMP"

このプロシージャでは、シートに一覧を作成するので、A1セルに拡張子なしのファイル名一覧を作成したいフォルダーのパスを、入力しておくようにしています。
 path_ = Range("A1").Value

[スポンサードリンク]

Home » FSO・FileSystemObjectの使い方 » 拡張子なしのファイル名一覧を作成するExcelマクロ-GetBaseNameメソッド

「FSO・FileSystemObjectの使い方」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.