FileSystemObject オブジェクトの使用例
                                                           玄関へお回り下さい。   
FileSystemObject オブジェクトの使用例
   使用する前に、[プロジェクト]→[参照設定]で Microsoft Scripting Runtime の参照に
チェックを入れておいて下さい。


作業に必要な FileSystemObject オブジェクトを作成します。このオブジェクトの作成方法に

は次の 2 つがあります。 
CreateObject メソッドを使用するか、 FileSystemObjectオブジェクトの変数を宣言することに
より、 FileSystemObjectオブジェクトを作成します。

  FileSystemObject オブジェクトの変数を宣言します。
  Dim FsObj As New FileSystemObject

  CreateObject メソッドを使用して、FileSystemObject オブジェクトを作成します。
  Set FsObj = CreateObject("Scripting.FileSystemObject")

  上の構文において、Scripting はタイプライブラリの名前であり、FileSystemObject は
  インスタンスが作成されるクラスの名前です。
  1 番目の方法は Visual Basic でのみ使用できますが、2 番目の方法は Visual Basic 及
  びVBScript のどちらでも使用できます。

詳しくはMSDNで FileSystemObject で検索して見て下さい。

指定のフォルダー内のファイル数を取得する      (146) 
     Option Explicit   'SampleNo=146 WindowsXP VB6.0(SP5) 2002.06.06
Private Sub Command1_Click()
  'New を指定した場合は、オブジェクトを最初に参照したときに
  'オブジェクトの新しいインスタンスが作成されるので、
  'Set ステートメントを使ってオブジェクトへの参照を代入する
  '必要はありません。
  Dim FsObj   As New FileSystemObject
  Dim RetValue As Long
  RetValue = FsObj.GetFolder("c:\windows").Files.Count
  Label1.Caption = "ファイルは " & RetValue & " 個有りました。"

  'Nothing を使用しているのを見かけますが、これは必ずしも必要ありません。
  'なぜなら変数FsObjは関数を抜けるときに自動的に削除されるからです。
  '(FileSystemObjectを参照しているものがなくなるからです。)
End Sub

  
指定のフォルダー内のフォルダー数を取得する      (146) 
   Private Sub Command3_Click()
  Dim FsObj   As New FileSystemObject
  Dim RetValue As Long
  RetValue = FsObj.GetFolder("c:\windows").SubFolders.Count
  Label2.Caption = "サブフォルダーは " & RetValue & " 個有りました。"
End Sub

指定フォルダー以下のサブフォルダーを列挙      (146)
     Private Sub Command2_Click()
  Dim FsObj As New FileSystemObject
  With List1
    .Clear
    .Visible = False
  End With
  Call sFolderSearch(FsObj.GetFolder("c:\Windows"))
  List1.Visible = True
End Sub


Private Sub sFolderSearch(ByRef myFolder As Folder)
'指定フォルダー以下のサブフォルダーを列挙
  Dim mySubFolder As Folder
  With myFolder
    If .SubFolders.Count > 0 Then
      For Each mySubFolder In .SubFolders
        List1.AddItem mySubFolder
        '再帰的に関数を呼び出し
        Call sFolderSearch(mySubFolder)
      Next
    End If
  End With
End Sub




2002/06/25