- ベストアンサー
VBAでcsvファイルを読み込んで並び順を変える方法
こんにちは。VBAについて質問させてください。 当方まだ勉強し始めたばかりのかなりの初心者です。 見当違いの質問かもしれません… どなたかご教授よろしくお願い致します。 以下のようなcsvファイルがあります。 Andou,tokyo,25, andou,aichi,16, iijima,fukushima,22, ----以下略------ 「名前」「出身地」「年齢」の順に 並んでいるだけのファイルです。 これを 「出身地」「年齢」「名前」の順に 並べ変えたいのですがどうしたら良いでしょうか? (1)一度シートにcsvファイルを読み込む (2)シート上で列をcut,pasteで並び替える なら方法は分かるのですが、 csvファイルが物凄く長いため シート上にcsvファイルを読み込めない状況です。 どうしたらよいのでしょうか? 何かアドバイスだけでもあれば教えて下さい。 なにとぞ宜しくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エクセルで(長くて)読み込めないのだから、エクセルでやる必要もないと思います。 VBScriptで、 以下の様にconv.vbsとして保存して実行すると data.cvsをdata_cnv.cvsとして変換出力します。 --------------------------------------------------------------- Dim fso, inf, outf, aLine, field, wk Set fso = WScript.CreateObject("Scripting.FileSystemObject") Set inf = fso.OpenTextFile("data.csv",1) Set outf = fso.OpenTextFile("data_cnv.csv",2,true) Do until inf.AtEndOfStream aLine = inf.ReadLine field = split(aLine,",") '列の並び替え wk=field(0) field(0)=field(1) field(1)=field(2) field(2)=wk aline = join(field,",") outf.WriteLine(aline) Loop inf.Close outf.Close
その他の回答 (1)
- HAL007
- ベストアンサー率29% (1751/5869)
>>csvファイルが物凄く長いため >>シート上にcsvファイルを読み込めない状況です。 VBAは組んだ事がないので状況はわかりませんが Cでソートのプログラムを書くのは面倒でした。 件数が多いならAccessでそのまま読込んでテーブルを作成し 検索クエリーで出身地にソートを設定させます。
お礼
なるほどです。Accessつかったほうがいろいろ出来るし、簡単そうですね。アドバイスありがとうございました♪
お礼
なるほどです!VBScriptsで書いてしまうんですね。 盲点でした・・・ありがとうございました。 VBScriptsの本かってみて、教えて頂いたプログラムをちゃんと勉強してみました。 VBScriptsってとっつきやすいんですねw 助かりました。本当にありがとうございました。