アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル2003のVBAを使って、特定のフォルダ内の複数のCSVファイル全てを「順番」に読み込む(ファイルを開く)方法を教えて下さい。

フォルダの中には「0.csv」~「12.csv」が入っています。
(しかし、間の番号が無い場合があります。例えば、0~4と6~10のファイルがあり、間に「5」がない。
必ず「0」から始まるないし、最後のファイル名の数字も違う。)

よろしくお願いします。

A 回答 (4件)

VBA DIR関数で調べてみてください。



Sub ボタン1_Click()
myfile = Dir("C:\*.*", vbNormal) ' ←ポイント1
' 上は、フォルダのパス\*.csvに変更して下さい。
r = 1
Do While myfile <> Empty
Cells(r, 1).Value = myfile
' ここにcsvを読み込む内容に変更してください。
r = r + 1
myfile = Dir() ' ←ポイント2
Loop
End Sub

取り合えず、A列に C:\にファイル名を書き出します。
    • good
    • 0

一度ファイル一覧をシートに読込み、エクセルの


ソート機能で並び替え、並び替え後のファイル名
を順に読み込んでいく、というのではダメですか?
    • good
    • 0

#2です。



FileSearchで名前順にファイルを取得することも出来ます。
↓は最終更新日順ですが、名前順も可能です。

http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …

ただ、リンク先でも述べられてますが、FileSearchは2007では使えな
くなりました。
また、バグもあるようです。
    • good
    • 0

2つのやり方が回答として良く出る。

FAQです。
(1)DIR関数
(2)VBSのFileSystemObject
下記XXXやフォルダ名指定のここは変えること。
MsgBox objfile.Nameのところで、拡張子つきの名が得られるから、みぎ4文字が.csv出ないものは捨ててください。
>フォルダの中には「0・・は下記の場合関係ありますか。出てきたもの(.csvのファイルを)を全て捉えればよいのでしょう。
捨てるものがあればIF文ででも聞いて捨てる該当のファイル名分は捨ててください。
ーーー
Sub test01()
Dim FSO, FolderObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Set FolderObject = FSO.GetFolder("C:\Documents and Settings\XXXX\My Documents\")
For Each objfile In FolderObject.Files
MsgBox objfile.Name '本当はここで選別と該当分を処理
Next
Set FSO = Nothing
End Sub
    • good
    • 0

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