VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

リンク元へ戻ります。 フォルダー関係のメニュー
1.FileSystemObject のフォルダーに関するメソッド・プロパティについて
2.フォルダーに関する基本的なワンポイントサンプル集
3.フォルダー(ディレクトリ)に関するパス操作色々
4.指定のフォルダーのファイル数・サブフォルダー数・総バイト数を取得
5.指定のフォルダーをエクスプローラーで表示
6.深い階層のフォルダーを一発で作成する
7.ファイル・フォルダーをごみ箱へ
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.その他、当サイト内に掲載のフォルダーに関するサンプル


4.指定のフォルダーのファイル数・サブフォルダー数・総バイト数を取得
1.指定のフォルダーのファイル数・サブフォルダー数・総バイト数を取得
2.指定のフォルダー以下の全ファイルを列挙(ファイル数・サブフォルダー数・総バイト数を取得)
3.
4.
5.
6.
7.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows Vista・Windows 7 (32bit) / VB6.0(SP6)
Option :[Option Explicit]
参照設定:Microsoft Scripting Runtime (scrrun.dll)         参照設定方法参照
使用 API:
なし
その他 :
    :
このページのトップへ移動します。 1.指定のフォルダーのファイル数・サブフォルダー数・総バイト数を取得

Option Explicit   'SampleNo=146  2002.06.06

Private Sub Command1_Click()
  Dim Fso    As New FileSystemObject
  Dim RetValue  As Long
  Dim FolderSize As Double

  RetValue = Fso.GetFolder("c:\windows").Files.Count
  Label1.Caption = "ファイルは " & RetValue & " 個有りました。"

  RetValue = Fso.GetFolder("c:\windows").SubFolders.Count
  Label2.Caption = "サブフォルダーは " & RetValue & " 個有りました。"

  '注意 Windows XP とそれ以降の OS では動作が異なりエラーが発生するフォルダーがあります。
  On Error Resume Next
  FolderSize = Fso.GetFolder("c:\windows").Size
  Label3.Caption = "フォルダーのサイズは " & Format(FolderSize, "#,### バイトです。")
  If Err.Number <> 0 Then
    MsgBox "そのフォルダーのサイズは取得できません。"
  End If
End Sub

Windows XP 以降では、システムフォルダーとか隠しフォルダー等の特殊なフォルダーの場合、実行時エラー 70 が発生する場合がありますので、そのようなフォルダーを指定する可能性がある場合は、エラー処理を実施して下さい。
尚、上記は、指定フォルダー内のファイル・サブフォルダーが対象になり、サブフォルダー以下のファイル等は含まれません。

このページのトップへ移動します。 2.指定のフォルダー以下の全ファイルを列挙(ファイル数・サブフォルダー数・総バイト数を取得)

Option Explicit

Private fSize  As Double
Private nFile  As Long
Private nFolder As Long

Private Sub Command1_Click()
  Dim Fso As New FileSystemObject
  List1.Clear
  fSize = 0
  nFile = 0
  nFolder = 0
  List1.Visible = False
  '指定のフォルダーを指定
  Call sFolderSearch2(Fso.GetFolder("c:\VBRescu1"))
  Set Fso = Nothing
  List1.Visible = True
 ' MsgBox "ファイルが" & List1.ListCount & "個見つかりました"
  Debug.Print Format$(fSize, "合計サイズ #,##0 バイト")
  Debug.Print Format$(nFile, "ファイル数: #,##0 ")
  Debug.Print Format$(nFolder, "フォルダー数: #,##0 ")
End Sub

Private Sub sFolderSearch2(ByVal myFolder As Object)
'On Error Resume Next
  Dim mySubFolder As Folder
  Dim myFile   As File
  '現在のフォルダー内のファイルを取得
  For Each myFile In myFolder.Files
    '指定の拡張子のファイルを取得する場合
    ' If LCase(Right(myFile.Name, 3)) = "xls" Then
      List1.AddItem myFolder & "\" & myFile.Name
      nFile = nFile + 1
      fSize = fSize + FileLen(myFolder & "\" & myFile.Name)
    ' End If
  Next
  With myFolder
    'サブフォルダー数を取得
    If .SubFolders.Count > 0 Then
      For Each mySubFolder In .SubFolders
        nFolder = nFolder + 1
        'サブフォルダーがある場合再帰的に繰り返す
        Call sFolderSearch2(mySubFolder)
      Next
    End If
  End With
  Set myFile = Nothing
  Set mySubFolder = Nothing
End Sub

 図1.上記実行結果
 folder04_01.gif

こちらは、エクスプローラーで確認したファイル数やフォルダー数と同じですが、実行時エラー 70 が発生する場合がありますので1.のサンプル同様、エラー処理を適時追加して下さい。

このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 7.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)





このページのトップへ移動します。