人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

質問です
c:\test\のホルダーに複数のCSVファイルがあります
このファイルを1つの新しいファイル(データを統合する)に
まとめるマクロをお願いします
新しいファイル名はファイルの数にしたいのですが10個あれば
01-10.csv
のようにできればおねがいします
できなければtestでもかまいません
各ファイルのデータは1行目からです列はAからSまであります
c:\test\の中にtxt、BAKの拡張子が付いたファイルもありますが無視
してください。あくまでCSVファイルのみです。

よろしくおねがいします

●質問者: inosisi
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

質問者から

ファイルの件数は最高で99件です
01-99


1 ● oil999
●100ポイント ベストアンサー

こんな感じでどうでしょう。
"C:\test\" にあるCSVファイルのみを連結して、"C:\test\test.csv" に出力します。
ターゲットのフォルダ、拡張子、出力先ファイル名は、マクロの最後の Call hogeCoupling の引数を変更することで対応できます。

Option Explicit

'1ファイル処理
Sub appendFile(path As String, fname As String, outfname As String)
 Dim buf As String, idx As String
 Dim fname2 As String, fname3 As String
 Dim x As Long
 
  'CSVファイル読み込み&書き込み
 fname2 = path & fname
 Open fname2 For Input As #1
 Open outfname For Append As #2
 Do Until EOF(1)
 Line Input #1, buf
 Print #2, buf
 Loop
 Close #2
 Close #1
End Sub

'ファイル探索+処理実行
Sub hogeCoupling(path As String, ext As String, outfname As String)
 Dim fcol As Object, re As Object
 Dim flist As Variant, remat As Variant
 Dim pat As String, fname As String
 Dim n As Long
 
  '処理対象ファイル探索+処理実行
 Set fcol = CreateObject("Scripting.FileSystemObject").GetFolder(path).Files
 Set re = CreateObject("VBScript.RegExp")
 pat = "\." & ext & "$"
 With re
 .Pattern = pat
 .IgnoreCase = True
 .Global = True
 For Each flist In fcol
 Set remat = .Execute(flist.name)
 If remat.Count > 0 Then
 Call appendFile(path, flist.name, outfname)
 End If
 Next flist
 End With
 Set re = Nothing
 Set fcol = Nothing
End Sub

Sub main()
 Call hogeCoupling("C:/test/", "csv", "C:/test/test.csv")
End Sub


inosisiさんのコメント
ありがとうございます 大変よくできています ターゲットのフォルダ、拡張子、出力先ファイル名は、マクロの最後の Call hogeCoupling の引数を変更することで対応できます。 があったので同じフォルダーの保存先CSVにできないのでどうしようかと思ってましたありがとうございました
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ