• ベストアンサー

エクセル:フォルダ内のファイル数を数える

1つのファイルを選択後、 そのファイルを開いてある操作をし、閉じる。 その後自動的に、同一フォルダ内のファイルを開いて同様の操作をし、閉じる。 これをフォルダ内のファイル全てに対して行う、 というマクロを組みたいです。 例えば、 フォルダAに、File1.csv, File2.csv, File3.csv, File4.csv の4ファイルがある時、 File3.csvを選んで操作を実行(csvファイル内のセルA4の値を、マクロを実行したExcelファイルにコピー)。 実行完了後、File3.csvは閉じる。 続けて、File1,File2,File4についても、 開く→コピーする→閉じる、を繰り返す。 フォルダ内全てのファイルに対して実行したら終了。 ファイル名は、常にFile+数字.csvではありませんが、拡張子は常にCSVです。 素人考えでは、フォルダ内のファイルの数と名前を取得し、ループで回せばいいと思うのですが、 「フォルダ内のファイルの数と名前を取得」する関数でもあるのでしょうか? 他に何か楽な方法でもあれば、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

Dir関数でやってみました。 このマクロを記述したエクセルのBOOKと同じフォルダ内のすべてのcsvファイルを開き、A4の値を取得します。 Sub test01() Dim MyFile As String, MyPath As String Dim i As Long Dim wb As Object MyPath = ThisWorkbook.Path & "\" '自分のパスを取得 MyFile = Dir(MyPath & "*.csv", vbNormal) 'パス内のcsvファイル Do Until MyFile = "" '対象ファイルがなくなるまで Set wb = Workbooks.Open(MyPath & "\" & MyFile) '選択したファイルを開く i = i + 1 ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value = wb.Sheets(1).Range("A4").Value '転記 wb.Close (False) '選択したファイルを閉じる MyFile = Dir '次のファイルを検索 Set wb = Nothing Loop '繰り返し End Sub

rem_1982
質問者

お礼

回答ありがとうございます。 >Workbooks.Open(MyPath & "\" & MyFile) など、今まで知らなかった書き方を見ることができ、大変参考になります。 目的のマクロは、無事組むことができました。

その他の回答 (2)

  • Kazamin
  • ベストアンサー率30% (17/56)
回答No.2

FileSystemObjectを使うのであれば、こんな感じかな。 Microsoft Scripting Runtime を参照設定してください。 Public Sub Proc1() Dim fso As New FileSystemObject Dim fo As Folder Dim fi As File Dim wbk As Workbook Set fo = fso.GetFolder("~フォルダ名~") For Each fi In fo.Files Set wbk = Workbooks.Open(fi.Name)     (中のロジックはご自分で組み立ててください) Set wbk = Nothing Next fi Set fi = Nothing Set fo = Nothing Set fso = Nothing End Sub お役に立てれば幸いです。

rem_1982
質問者

お礼

回答ありがとうございます。 無事動作しました。 しましたが、挙げていただいたコードにはまだ私にはわからない部分もあるので、 今後調べていこうと思います。

  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.1

DIR関数やFileSystemObjectなどいろいろありますが。 ブックマークしておくと良いサイトがあります。 いつも利用させてもらってる「OfficeTANAKA」さんのページ。サンプル満載です。 リンクフリーの記述があるので、リンク貼ります。 http://www.officetanaka.net/ ここらあたりか? http://www.officetanaka.net/excel/vba/file/file07.htm

rem_1982
質問者

お礼

回答ありがとうござます。 サンプルや解説のページはいくつかブックマークしておりましたが、 こちらは知りませんでした。 参考にさせていただきます。

関連するQ&A