- ベストアンサー
csv内に書いてある全テキストデータを、1txtファイル内に格納したい
csv内に書いてあるテキストデータを、 テキストファイル表に変換・・というツールは見つけたのですが 表ではなく、こちらが指定した表示方法で1txtファイル内に 全テキスト内容を格納したいです。(1項目ずつではなく) 例) 名称,電話番号,住所1,住所2 ○○店,011-○○-○○○,北海道,札幌市 △△店,031-△△-△△△,北海道,苫小牧 ↓↓↓ 表示させるためのテンプレートを自分で作成する テンプレート例) 名称:【名称】店 電話番号:【電話番号】 住所:【住所1】【住所2】 ↓↓↓ 名称:○○店 電話番号:011-○○-○○○ 住所:北海道札幌市 名称:△△店 電話番号:011-△△-△△△ 住所:北海道苫小牧 ・ ・ ・ という感じで、全テキスト内容を 「1txtファイル内に」格納したいです。 色々と調べているんですが、 うーん、これが中々方法が見つかりません^^; どなたか分かる方にお答え頂ければ幸いです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#1です。私がVBAを書き間違えてます。すみません。 誤)line input #file1, strBuffer 正)line input #nFile1, strBuffer です。 あと、 print #nFile2, "住所:" & strArrey(2) & strArrey(3) の下に print #nFile2, "" を追加してください。でなければ店ごとの区切りが無い連続した行になってしまいます。
その他の回答 (2)
- taba
- ベストアンサー率61% (349/567)
同じ処理を何度もしないといけないのであれば、#1の方のようにVBAなどでプログラムを書いた方がいいと思います。私はperlをパソコンにインストールしてあるので、たいていperlでテキスト処理をします。 もし1回だけ力業で乗り切れればいいということなら、こんなやり方も。 1)CSVをExcelで開く 2)データの右に、加工した変数を作る。例えば、 ="名称:"&RC[-10]&"店" など。RC[-10]は適当です。【名称】のセルを指定。 住所は、="住所:"&RC[-10]&RC[-9]みたいに。 3)全部の変数を加工する列が右にできたら、それを下にコピー。 個々のアイテムが置き換えられたテーブルになります。 4)置き換えられた右の部分を範囲指定→別のシートに値だけコピー 5)そのExcelシートをテキスト(タブ区切り)で出力 ひとつのデータが、 名称:○○店[tab]電話番号:011-○○-○○○[tab]住所:北海道札幌市~ のようになります。 6)テキストエディタ等でタブを改行に置換。 データの区切りが分からなくなるので、4の段階で右端に目印を 入れておくと、あとでそれを改行に置換できます。例えば「◎」など、 データ内で使われていないもの。
お礼
tabaさん、返信ありがとうございます。 perlというのもプログラムのようですね。 難しそうです^^; 1、2回の操作で、複数のcsvファイルを一括で質問のような処理ができる専用ソフトというのはなさそうです。。
- bin-chan
- ベストアンサー率33% (1403/4213)
EXCELをお持ちですか? VBAというプログラム言語を使用できる環境があります。 そこで「テキストファイルを読み、ご希望の形式に変換して出力」という プログラムを書けば可能と思います。 元のCSV,変換後のtxtファイルとも、Cドライブ直下にあり、TESTとするならば (例外データは無いものとして) sub テキスト変換() dim nFile1 as long dim nFile2 as long dim strBuffer as string dim strArrey() as string nFile1 = freefile open "C:\test.csv" for input as #nfile1 nFile2 = freefile open "C:\test.txt" for output as #nfile2 while not(eof(nFile1)) l ine input #file1, strBuffer strArrey()=Split(strBuffer,",") print #nFile2, "名称:" & strArrey(0) & "店" print #nFile2, "電話番号:" & strArrey(1) print #nFile2, "住所:" & strArrey(2) & strArrey(3) wend close end sub みたいな感じで。
お礼
bin-chanさん、ありがとうございます。 変換したいcsvファイル名を \test.csv にして 何も書かれていないテキストファイル名(test.txt)をCドライブ直下に作成しました。 その後、よく理解でききてないかもしれませんが、 上記ソースをVBAエディッターに書いてマクロ実行としたら・・(やり方合っているとは思いますが^^;) l ine input #file1, strBuffer の部分でエラーが発生しました。 「TEST」というのはフォルダではないと思いましたが、フォルダ作ってみて試しても同じエラーでした。 エクセルでの操作のやり方が間違っているんでしょうかね。。
補足
できました!大変ありがとうございます。感動しました~ 複数のcsvファイルを一括で同じ処理させて、 一気に「csvファイル名.txt」を作りたいのですが、無理でしょうか^^; 同じ処理をさせたいcsvファイルが120個ほどあるもので。。難しそうですね。。 おそらく現在の仕様での複数のcsvファイルの処理となると、一回一回該当のcsvを開いてVBAエディターを開いてコード内容にあるファイル名をVBAに書き直して実行、という必要があると思います。 もしあっさりと実現可能でしたら、投稿いただければ幸いです<(_ _)> どちらにしても後ほどお礼致します。