![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
こんにちは、同様の質問があるようですが、ポイントはもとのファイル名の情報を、統合後のファイルに盛り込みたい、という点です。
複数のCSVファイルがあり、これを一つのファイル、もちろんエクセルでもOK、に一括統合したいです。いろいろなソフトがあるようですが、私が当ったところでは、ファイル名に関する情報を盛り込めず、ひたすら元のcsvデータが順次羅列されているという具合です。ファイル統合後も、もとの○○のデータがどの位置にあるかが分からないと厄介でして、なんとかご教示頂けますと幸いです。できればフリーソフトがあると幸いなのですが・・・。
プログラミング的素養がないため、マクロなどでしたら、初心者向けの説明でお願いできればと思います。
csvファイルが200程あり、全部コピペという訳にもいかず、焦っております。何卒よろしくお願いします。
No.3ベストアンサー
- 回答日時:
エクセルに取り込む方法が紹介されているので、ひとつのファイルにまとめるスクリプトを書いてみました。
200のファイルが同じフォルダにあること前提で書いてます。
VBAでもいいのですが、200ファイルもあると2003以前のExcelではおさまらない可能性もあるので、VBスクリプトで書いてます。
以下のコードをテキストファイルにコピーし、適当な名前.vbsで保存します。
保存したvbsファイルをcsvが置いてあるフォルダにコピーし、実行します。
すると、そのフォルダに結合.txtができます。
結合.txtの中身は
csvファイルフルパス,csvファイルの行番号,csvファイルの中身
・
・
となります。
こんな感じでどうでしょうか
'----ここからコード
Option Explicit
Dim strScriptPath
Dim fso
Dim Folder
Dim FileName
Dim objRE
Dim OutTxt
Dim ReadCsv
Dim OutTmp
Dim LineNum
'スクリプト名を含まないフルパスを編集する
strScriptPath = Replace(WScript.ScriptFullName,WScript.ScriptName,"")
Set fso = CreateObject("Scripting.FileSystemObject")
'対象フォルダの指定
Set Folder = fso.GetFolder(strScriptPath)
'新規に作成するファイル
Set OutTxt = fso.CreateTextFile(strScriptPath & "結合.txt")
Set objRE = CreateObject("VBScript.RegExp")
'検索条件の設定
objRE.Pattern = "\.CSV$"
'指定のフォルダに格納された各ファイルを処理する
For Each FileName In Folder.Files
'大文字化して比較する。拡張子がcsvなら1行ずつ読み込んで、
'処理中のファイルパスと行番号をいれつつ結合.txtに書き込む
If objRE.Test(Ucase(FileName)) Then
LineNum = 1
Set ReadCsv = fso.OpenTextFile(FileName)
Do Until ReadCsv.AtEndOfStream = True
OutTmp = FileName & "," & LineNum & "," & ReadCsv.ReadLine()
OutTxt.WriteLine(OutTmp)
LineNum = LineNum + 1
Loop
ReadCsv.Close()
End if
Next
OutTxt.Close()
set fso = Nothing
set Folder = Nothing
set objRE = Nothing
'----ここまで
No.4
- 回答日時:
文字列置換系のコマンドラインツールを使ったバッチファイルでも処理出来そうです。
まずはツールです。そのままスバリなネーミングの「文字列置換」を入手して下さい。(作者:星野 香奈 様)
http://www.vector.co.jp/soft/win95/util/se271454 …
解凍後のchikan.exeを使用します。
次にメモ帳などでバッチファイルを作成して下さい。
仮に名前をcsvadd.batとします。
内容は次の4行です。
dir *.csv /b > csv.lst
for /F %%i in (csv.lst) do chikan %%i /r/n ,%%i/r/n
del csv.lst
copy *.csv all.csv
この内容は、
1行目でディレクトリ内にあるcsvファイル名を取得してリスト化
2行目でリストに基づき改行コードを元ファイル名+改行に置換
3行目で先程生成したリストを削除
4行目でcsvファイルの一本化
という流れです。
後はcsvadd.batとchikan.exeを、200個のcsvファイルがあるフォルダに置いて、csvadd.batを実行します。
すると、excelで開くと最終列に○○.csvという元のcsvファイル名が各行に入っている、全てのcsvが統合されたall.csvが生成されます。
No.2
- 回答日時:
一つずつ手作業になりますが、テキストファイルウィザードを使って
CSVファイルをインポートすればCSVファイル名がシートのタブに
入ります。
一つにまとめるとシートが200のxlsファイルになるので目次ページ
を作ってシートへのリンクを張るか、1ファイル20位にシートを
分割するといいと思います。
参考URL:http://enterprisezine.jp/article/detail/675
No.1
- 回答日時:
手作業になりますが、普通に考えるとこうなると思います。
csvファイルをダブルクリップするとExcelが起動してcsvファイル名のシートで開きます。
シートのコピーまたは移動で保存用のExcelにシートごと移動すれば、csvがシートごとに分けられた1本のxlsファイルができます。
1ファイル200シートになってしまいますが‥‥。
1シートに統合しなければいけないのであれば、左端(または右端)にcsvファイル名のカラムを追加してあとで区別できるようにするしか無いでしょう。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【Excel】Powerクエリーの取り...
-
エクセルのVBAについて とある...
-
Python CSVファイルについて
-
複数エクセルファイルの合成
-
エクセル 指定範囲をCSV出力
-
コマンドプロンプトの「%1」と...
-
コマンドプロンプトのエラーに...
-
大量のフォルダからひとつのフ...
-
バッチでテキストファイルから...
-
VBAでワークシートを引数として...
-
バッチ処理でファイルの中身を...
-
echoの出力の最後のスペースを...
-
これってパソコンの最適化が完...
-
一太郎がイントラで開けません...
-
exeファイルを実行するとコマン...
-
.txtではなく.logの方が良いの...
-
パソコンのフォルダー内のファ...
-
バッチファイルで昨日の日付を取得
-
vbscriptを用いて他のVBSファイ...
-
phpのファイルがブラウザで開か...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Python CSVファイルについて
-
エクセルのVBAについて とある...
-
複数エクセルファイルの合成
-
エクセル 指定範囲をCSV出力
-
FTPコマンド mgetでとまってし...
-
アクセスと同フォルダのCSVファ...
-
csv形式からbmpを作成
-
複数のcsvファイルを統合、でも...
-
【Rコマンダー】データインポー...
-
MAC フォルダ内のPDF件数とペー...
-
Excelの帳票形式をアクセスに取...
-
csvファイルをlinuxコマンドで...
-
csvをVBAを使ってエクセル形式...
-
yahooカレンダーのデータをICS...
-
gnuplotで複数csvファイルから...
-
ファイルパスの指定の仕方がわ...
-
エクセルマクロ、複数のCSVファ...
-
シェルスクリプトで文字コード変換
-
コマンドによるzip圧縮
-
バッチ処理でcsvファイルの文字...
おすすめ情報