dポイントプレゼントキャンペーン実施中!

1つのファイルを選択後、
そのファイルを開いてある操作をし、閉じる。
その後自動的に、同一フォルダ内のファイルを開いて同様の操作をし、閉じる。
これをフォルダ内のファイル全てに対して行う、
というマクロを組みたいです。

例えば、
フォルダAに、File1.csv, File2.csv, File3.csv, File4.csv の4ファイルがある時、
File3.csvを選んで操作を実行(csvファイル内のセルA4の値を、マクロを実行したExcelファイルにコピー)。
実行完了後、File3.csvは閉じる。
続けて、File1,File2,File4についても、
開く→コピーする→閉じる、を繰り返す。
フォルダ内全てのファイルに対して実行したら終了。
ファイル名は、常にFile+数字.csvではありませんが、拡張子は常にCSVです。

素人考えでは、フォルダ内のファイルの数と名前を取得し、ループで回せばいいと思うのですが、
「フォルダ内のファイルの数と名前を取得」する関数でもあるのでしょうか?
他に何か楽な方法でもあれば、教えてください。

A 回答 (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
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/06 17:41

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

お役に立てれば幸いです。
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/06 17:39

DIR関数やFileSystemObjectなどいろいろありますが。



ブックマークしておくと良いサイトがあります。
いつも利用させてもらってる「OfficeTANAKA」さんのページ。サンプル満載です。

リンクフリーの記述があるので、リンク貼ります。
http://www.officetanaka.net/

ここらあたりか?
http://www.officetanaka.net/excel/vba/file/file0 …
    • good
    • 0
この回答へのお礼

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

お礼日時:2007/04/06 17:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!