(2)フォルダー内のすべてのファイル名表示と計算
(a)ファイルを検索して数量を表示する
d:\excelkensu内にエクセルファイルがあります。
指定したフォルダーの中のファイル名を返す関数Dirを使います。
ファイル名を変数bufに代入し空になるまでの繰り返しは
Do While 条件
Loop
を使います。
Windowsの前のMSDOSを使った方ならわかりますがファイルを全て検索するときは
Dir *.*
エクセルファイルのみ検索する場合は
Dir *.xlsx
をつかいました。今回もエクセルファイルだけなので*.xlsxを使います。
Sub kensu()
Dim i As Long
Dim buf As String
Dim Path As String
Path = "d:\excelkensu\"
buf = Dir(Path & "*.xlsx")
Do While buf <> ""
i = i + 1
buf = Dir()
Loop
MsgBox "全部で" & i & "個ファイルがありました"
End Sub
(b)エクセルのファイル名をシートに表示(コピー)します。
変数bufにファイル名が入っていますからその値をセルに代入します。
Cells(i, 1) = buf
セルに代入ということは表示と同じです。
Sub hyouji()
Dim i As Long
Dim buf As String
Dim Path As String
Path = "d:\excelkensu\"
buf = Dir(Path & "*.xlsx")
Do While buf <> ""
i = i + 1
Cells(i, 1) = buf
buf = Dir()
Loop
End Sub
(c)フォルダー内すべてのブックのシートの計算
各シートの1行1列に数字が入力されています。
その合計をシートに出力します。
エクセルファイルを検索するたびにそのファイルをオープンします。
変数keisanに加算しファイルを閉じ次のファイルを検索してなくなる迄繰り返します。
答えをCells(7, 1)に代入します。
Sub yobidasi()
Dim keisan As Long
Dim buf As String
Dim Path As String
Path = "d:\excelkensu\"
buf = Dir(Path & "*.xlsx")
Do While buf <> ""
Workbooks.Open Path & buf
keisan = keisan + Cells(1, 1)
ActiveWorkbook.Close
buf = Dir()
Loop
Cells(7, 1) = keisan
End Sub