Excel VBAのチップスです。
コンピュータのファイル システムへのアクセスを提供します。
構文
(以下Helpより)-----
FileSystemObject オブジェクト
Scripting.FileSystemObject
-----(以上Helpより)
指定されたパスに置かれているフォルダに対応する Folder オブジェクトを返します。
構文
(以下Helpより)-----
object.GetFolder(folderspec)
パラメーター
名前 説明 object 必ず指定します。FileSystemObject オブジェクトの名前を指定します。 folderspec 必ず指定します。目的のフォルダのパスを指定します。絶対パス、または相対パスのどちらかを指定できます。 指定したフォルダが存在しない場合は、エラーが発生します。
-----(以上Helpより)
次の例は。Foldersコレクション(1つのFolderオブジェクトに含まれるすべてのFolderオブジェクトのコレクション)を取得して、
For Each...Next ステートメントでフォルダーを抽出するものです。
VBAのモジュールが入ったExcelファイルと同階層にExcle1~3までのフォルダーがある場合の実行結果で、1列目にフォルダー名、2列目にフォルダーのサイズをバイトで表示しています。
Sub findfolder()
Dim folderpath As String
folderpath = ActiveWorkbook.Path
ShowFolderList folderpath
End Sub
Sub ShowFolderList(folderpath)
Dim i As Integer
Dim fs, f, f1, fc
Set fs = CreateObject("Scripting.FileSystemObject")
Set f = fs.GetFolder(folderpath)
Set fc = f.SubFolders
i = 1
For Each f1 In fc
Worksheets("Sheet1").Cells(i, 1).Value = f1.Name
Worksheets("Sheet1").Cells(i, 2).Value = f1.Size
i = i + 1
Next
Set fs = Nothing
Set f = Nothing
Set fc = Nothing
End Sub
結果
次の例は、上記の Set fc = f.SubFolders の部分を Set fc = f.Files に変更してファイルを抽出したものです。
VBAのモジュールが入ったExcel(foldercheck)と同階層にExcle2A~2C,画像ファイルがある場合の実行結果です。
結果
以下、SubFolders,Files,Sizeプロパティの説明と構文です
(以下Helpより)-----
SubFolders プロパティ
指定されたフォルダ内に置かれているすべてのフォルダの入った Folders コレクションを返します。 このコレクションには、隠しファイルやシステム ファイルの属性を持つフォルダも含まれます。構文
object.SubFolders
object には、Folderオブジェクトの名前を指定します。
Files プロパティ
指指定されたフォルダ内に置かれているすべての File オブジェクトの入った Files コレクションを返します。 このコレクションには、隠しファイルやシステム ファイルの属性を持つ File オブジェクトも含まれます。構文
object.Files
object には、Folderオブジェクトの名前を指定します。
Size プロパティ
対象がファイルの場合、指定されたファイルのバイト単位のサイズを返します。 対象がフォルダの場合、指定されたフォルダ内のすべてのファイルおよびフォルダの合計サイズをバイト単位で返します。構文
object.Size
object には、File オブジェクトまたは Folder オブジェクトの名前を指定します。
-----(以上Helpより)