• ベストアンサー

CSVの項目の順序を入れ替えたり削除するようなフリーウェア

たとえば、あるアプリケーションから書き出したCSVが、名前、住所、電話、メール、性別 のばあい、まったく別のアプリケーションで取り込むために 住所、氏名、電話 の順にしたい、と思ったときそれを簡単に実現するフリーウェアなどはないでしょうか。エクセルで開いて順序を入れ替えればできなくはありませんが、煩雑で間違いの元です。毎日のルーチンワークなので、たとえば、アイコンにドラック&ドロップで出来上がるようなものです。取り込みと書き出しの形式をいろいろ変えられるようになっているのが好ましいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • togino
  • ベストアンサー率75% (97/129)
回答No.1

う~ん、フリーソフトに頼るのも悪くはないですが こうやってプログラムすると自分の欲しいものが 用意できて(いくらでも改造可能)いいですよ~ 並び替えする前の列の数が3列あって 「3列目,1列目,2列目」の順に並び替えたい場合 Dim arySort(2) arySort(0) = 2 arySort(1) = 0 arySort(2) = 1 ' 引数(ドラッグアンドドロップしたファイル名)を取得 Set objArgs = WScript.Arguments If objArgs.Count = 0 Then strFileName = InputBox("並び替える CSV のファイル名を入力してください。") Else strFileName = objArgs(0) End If Const ForReading = 1,ForWriting = 2,ForAppending = 8 '定数の指定 Set objFS = WScript.CreateObject("Scripting.FileSystemObject") Set objFileInput = objFS.OpenTextFile(strFileName, ForReading) Set objFileOutput = objFS.CreateTextFile(strFileName & ".tmp.csv", True) Dim aryColsSorted Do Until objFileInput.AtEndOfStream strLine = objFileInput.ReadLine aryCols = Split(strLine, ",") i = 0 ReDim aryColsSorted(UBound(aryCols)) For Each strCol In aryCols aryColsSorted(arySort(i)) = strCol i = i + 1 Next objFileOutput.Write Join(aryColsSorted, ",") & vbCrLf Loop objFileOutput.Close objFileInput.Close

その他の回答 (1)

  • togino
  • ベストアンサー率75% (97/129)
回答No.2

ANo1 のプログラムですが、 resort.vbs という名前のファイルを作成して、それに コピペして、あとは、ソートしたいファイルを ドラック&ドロップすればおっけ~です。 ただ、"" の中にコンマ(,)がある場合は、さらに 考慮しないといけないですが・・・

関連するQ&A