- ベストアンサー
CSVの一括コピー&フィールド追加
複数のCSVファイルを1つにまとめるという作業をやっています。 1つのファイルにまとめる際に、簡単な住所データ(「○○市」など)を追加しています。 現在はこの作業をExcelを使って手作業で行っているのですが、もっと効率的にできる方法はないでしょうか。 何せ、ファイル数がとんでもなく多いので・・。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
以下をメモ帳などに貼り付けて、拡張子をvbsとして保存してください。 -------------ここから------------------- Set fso = CreateObject("Scripting.FileSystemObject") Set sh = WScript.CreateObject("WScript.Shell") Set result = fso.OpenTextFile(sh.SpecialFolders("Desktop")+"\result.csv", 8, True) For Each args in Wscript.arguments Set tfo = fso.OpenTextFile(args,1) fn = fso.GetFileName(args) fn = Left(fn,Len(fn)-4) Do While tfo.AtEndOfStream <> True result.WriteLine(chr(34)+fn+chr(34)+","+tfo.ReadLine()) Loop tfo.Close() Next result.Close() -------------ここまで------------------- vbsファイルにcsvファイルをドロップすれば、1列目にファイル名を追加しながら、デスクトップのresult.csvというファイルにその内容を追記していきます。 result.csvが無いときは勝手に作成します。 ただ、エラーチェックを何もしていないので、イレギュラーなデータが来たら、変な動作をするかもしれません。 一応できたファイルにおかしいところがないか、確認してください。
その他の回答 (1)
- madman
- ベストアンサー率24% (612/2465)
簡単にファイルを一つにする方法として、DOSのcopyコマンドがあります。 そのcsvファイルをwindowsマシンにコピーしてください。 例) c:\CSVにコピー コマンドプロンプト(DOSプロンプト)で該当のディレクトリに移動してください。 例) >c: >cd c:\CSV 次に結合します。 >copy * 結合結果.csv これで、全てのファイルが「結合結果.csv」という1つのファイルになります。 >のマークは入力しないで下さい。
お礼
さっそくのご解答ありがとうございます。 説明不足でしたが、実は1つ1つのCSVファイルもものすごいデータ数になっておりまして、そのまま結合してしまうと、元のデータがどこのデータだったのか、わからなくなってしまうため、フィールドを追加する作業も必要だったのです。 一度結合してから目で確認しながら、フィールド内容を追加していけばよいのかもしれませんが、それも非効率的だな・・と思いまして。 ファイル名に地名を割り振っておいて、コピーの際にぞれぞれのファイル名が特定のフィールドにコピーされるとよいのですが・・。
お礼
ありがとうございました! 想定どおりのことができました。