• 締切済み

タブ区切りtxtファイルをCSVファイルにしたい

数値データの入ったタブ区切りのテキストファイルが約80個あり、 それらを全てCSVファイルにしたいです。 テキストファイルのデータ形式は以下のようになっています。 339.54 1091.50 339.92 1091.50 340.30 1091.50 340.68 1057.60 341.06 1028.22 これがあと数百行あります。 コマンドプロンプトでCSVにリネームすると、数値が詰まってしまい、困っています。 例えば上のデータ例であれば、 339.541091.50 のように表示されたCSVファイルになってしまいます。 339.54, 1091.50 のようなカンマ区切りのCSVファイルとして出力する方法はないでしょうか? VBAの知識が少しだけあるので、それを使った方がいい場合は教えて頂けると幸いです。 よろしくお願い申し上げます。

みんなの回答

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.6

「VBScript」による回答ですので、「Windows限定」です。 このプログラムは、タブ区切りの「~.txt」ファイル群が存在するフォルダにプログラムファイルを放り込んで、ダブルクリック(「シングルクリック」→「Enter」の方が確実)するだけです。 フォルダ内のすべての「~.txt」ファイルを、一括置換で、「<Tab>」→「,」に置換して、同じフォルダ内に、同じ名前(「abc.txt」→「abc.csv」)で保存します。 以下のプログラムを、メモ帳かテキストエディタに貼り付け、「~.vbs」という名前で保存します。 「~」の部分は、何でもかまいませんが、「.vbs」の部分は、必ず、半角です。 できたプログラムファイル(「~.vbs」ファイル)を、これから処理したい、「~.txt」ファイル群が存在するフォルダに放り込んで、ダブルクリックするだけです。 最後に「Finished!」と表示しますので、「OK」を押して、終了してください。 Option Explicit Dim a, cv, f, gf, n, so, tx Set so = CreateObject("Scripting.FileSystemObject") Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName)) For Each f In gf.Files If LCase(so.GetExtensionName(f.Name)) = "txt" Then n = so.GetBaseName(f.Name) Set tx = so.OpenTextFile(gf & "\" & f.Name, 1) Set cv = so.OpenTextFile(gf & "\" & n & ".csv",2, True) a = tx.ReadAll a = Replace(a, vbTab, ",") cv.Write a tx.Close cv.Close Set tx = Nothing Set cv = Nothing End If Next Set gf = Nothing Set so = Nothing MsgBox("Finished!") 簡単な説明です。 Option Explicit 「厳密に」というような意味ですが、気にしないでください。 Set so = CreateObject("Scripting.FileSystemObject") ファイルやフォルダを扱えるようにしていますが、今回は特に、「txt」や「csv」というテキストファイルを扱うのにも必要です。 Set gf = so.GetFolder(so.GetParentFolderName(WScript.ScriptFullName)) プログラムファイルの存在するフォルダを取得しています。 For Each f In gf.Files そのフォルダ内のすべてのファイルを1つずつ処理。 If LCase(so.GetExtensionName(f.Name)) = "txt" Then もし、拡張子が「txt」なら、 n = so.GetBaseName(f.Name) ベースネーム(「abc.txt」→「abc」)を調べています。 Set tx = so.OpenTextFile(gf & "\" & f.Name, 1) 「読み込み専用」で開いています。 Set cv = so.OpenTextFile(gf & "\" & n & ".csv",2, True) 同じフォルダ内に、同じ名前で「csv」として、「書き込み専用」で新規作成しています。 a = tx.ReadAll 一気に全部読み込んでいます。 a = Replace(a, vbTab, ",") 一括置換で、「<Tab>」を「,」に置換しています。 cv.Write a 書き込んでいます。 tx.Close cv.Close Set tx = Nothing Set cv = Nothing 両ファイルを閉じています。 End If Next を、すべてのファイルで繰り返しています。 Set gf = Nothing Set so = Nothing MsgBox("Finished!") あとは、終了処理で、最後に「Finished!」と表示しています。

  • HohoPapa
  • ベストアンサー率65% (454/690)
回答No.5

案1 >例えば上のデータ例であれば、 >339.541091.50 >のように表示されたCSVファイルになってしまいます。 この状態の時に、 対象列(A列)を選択して、データタブ、区切り位置と選ぶと 横方向に4つのセルへ分割できます。 これをcsv形式で保存する。 案2 他の方が紹介していましたが 課題ファイルをメモ帳で開き、 タブをカンマに置き換えます。 https://www.ipentec.com/document/windows-notepad-search-tab-character が参考になります。 案3 VBAでイケルなら、 次のようなコードでいかがでしょうか。 対象ファイル格納フォルダー(※)に対象ファイル全数を格納すれば、 一気に処理ができます。 Sub MySub()  Const FromDir = "D:\wk"   '対象ファイル格納フォルダー(※)  Const ToDir = "D:\NewDir"  '出力するcsvファイル格納フォルダー    Dim GetFullName As String  Dim PutFullName As String  Dim FSO As Object    GetFullName = Dir(FromDir & "\*.*")    Do   If GetFullName = "" Then Exit Sub      GetFullName = FromDir & "\" & GetFullName      Set FSO = CreateObject("Scripting.FileSystemObject")   PutFullName = ToDir & "\" & FSO.GetBaseName(GetFullName) & ".csv"      Workbooks.OpenText Filename:=GetFullName, Tab:=True   ActiveWorkbook.SaveAs Filename:=PutFullName, FileFormat:=xlCSV, _     CreateBackup:=False   ActiveWindow.Close      Set FSO = Nothing      GetFullName = Dir()    Loop End Sub

  • oboroxx
  • ベストアンサー率40% (317/792)
回答No.4

参考URLのソフトはどうでしょうか。 CSVファイルを開くときは、「囲みなし」、「タブ区切り」を指定して開き、保存する時に「囲みなし」、「カンマ区切り」で保存すると希望のことができると思います。

参考URL:
http://www.oborodukiyo.info/Soft/MakeCSV/MakeCSV
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

例データの、ドットの場所にTAB記号が入っているのか。そのことを質問に明確に書かないでどうする。テキストのファイルの「TABキー記号」を「カンマ」に変えるのは、テキストエディタ―などのソフトの置換作業で一発ではないのか? 「メモ帳」にも、操作で置換があるようだ。 VBAでやっても、簡単なコードでは?それのコードを書けというのか? >VBAの知識が少・・ その問題の場面場面でコードがどうなるか勉強しないと、その言語の文法だけかじっていても、全く役に立たない経験はないか?

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

>コマンドプロンプトでCSVにリネームすると、数値が詰まってしまい、困っています。 どのような用途に使いたいのですか? Excelで使いたいときは空白のブックを開いて「外部データの取り込み」でテキストファイルからデータを取り込めます。 また、TAB区切りのテキストファイルの拡張子をコマンドプロンプトでcsvにリネームしてもTABは無くなりません。 提示のデータ(数表)をメモ帳で確かめましたが問題ありませんでした。 >のようなカンマ区切りのCSVファイルとして出力する方法はないでしょうか? テキストエディターの置換機能で変換は可能ですが無駄な作業のような気がします。 >VBAの知識が少しだけあるので、それを使った方がいい場合は教えて頂けると幸いです。 コーディングしてデバックすることも手間が掛かりますのでコマンドプロンプトで拡張子を書き換えた方が良いでしょう。

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.1

>>339.541091.50 >>これがあと数百行あります。 意図しない表示になってるんでしょうかね。 339.54[タブ]1091.50 こういうことでしょうか? >>カンマ区切りのCSVファイルとして出力する方法はないでしょうか? 複数ファイルに対して文字列置換を行えるツールを使用し、「[タブ]⇒[カンマ]」に置換し、 完了後に、「[txt]⇒[csv]」に拡張子変換かけれるツールを使用すればいいと思いますよ。 既に、何かしらのテキストエディタを使用しているのでしたら、前者の機能は持ち合わせている場合もあるとは思います。

関連するQ&A

  • バッチファイルの作り方(CSV→タブ区切り)

    CSVファイルをタブ区切りにする手順は ツールーバーの 【データ】→【区切り位置】→カンマ、タブ などの設定で出来ると思います。 その手順を何度も繰り返すのが面倒なため、 バッチファイルを作成しようと考えています。 やりたい事としまして、 (1) .csvファイルをコマンドプロンプトに入れる(ドラックドロップ) (2) カンマ区切り→タブ区切りに変換し、上書き保存 ということをコマンドプロンプト(バッチファイル)で行いたいです。 関数としては for /f を使うのだと思うのですが、 よく分からないため教えていただきたいです。 宜しくお願いいたします。

  • CSV→タブ区切り

    CSVファイルでデータを取り込もうとしてますが、金額にカンマが入ってたりして、列がずれたりします。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=361247 ↑等を参照した上ですが、タブ区切りデータでインポートしてみようかと思います。 CSVファイルをタブ区切りファイルに変換するにはどうしたらよいでしょうか?そういうコードはありますでしょうか?

  • CSVでタブ区切り

    はじめまして。エクセル2003を使用中です。 データのやり取りをする際に 「エクセルのデータをCSVでタブ区切り」に変換して送って欲しい と言われました。 保存時に 「名前を付けて保存」→「ファイルの種類」で「CSV」を選択すると「カンマ(,)」で区切られますよね? これを簡単にタブ区切りにしたいのですが・・そんな方法はありますでしょうか? 現在、試作の段階では一旦TXT形式で保存し、ファイル名を直接「CSV」に変更しています。 実は常時この作業を行う者が私よりPCに詳しくない為、この手順だと不安だと言います。 出来る限りわかりやすく作業を行いたいのです。 不明点があれば補足させていただきますので アドバイス等ございましたらどうぞよろしくお願いします。

  • カンマ区切りCSVファイルをVBAで読み込みたい

    こんにちは。EXCELのVBAに詳しい方、どうか教えてください! カンマ区切りCSVファイルをEXCELに読み込みたいのですが、 CSVファイルのデータが金額のため、データ自体にもカンマが含まれていて、 金額のカンマでも分割されてEXCELのセルに収まってしまいます。 データの区切りのカンマと、金額のカンマを区別して読み込む良い方法はないでしょうか。 とても困っているので、お解りになる方どうかご回答をお願いいたします。 ・CSVファイルのデータ   1,000 , 2,000 , 1,500 , 3,000 , 1,000 , 2,500 , 2,000  ↑金額のカンマでデータが分割されないように読み込みたいのですが・・・

  • ExcelでのCSVファイルの編集について、

    ExcelでのCSVファイルの編集について、 オートフィルタ機能を使いたいため、 ExcelでCSVファイルの編集しようとしているのですが、ちょっと苦戦しています。。。 私が試してみたこと 1.もとのCSVファイルの拡張子を○○.csv → ○○.txtに変更。   ↓ 2.Excelの「開く」からその○○.txtを読み込む。   ↓ 3.テキストファイルウィザードに従い、   1「カンマやタブなどの区切り文字によって~ 」にチェック   2「区切り文字」→ カンマ、「文字列の引用符」 → "   3「列のデータ形式」 → 文字列 ※090などの数字を、90と先頭の0を消されないように 上記のような手順でCSVファイルを取り込み、編集を終え、 保存する時は   「○○.txtにはテキスト(タブ区切り)と互換性のない機能が含まれている可能性があります。    この形式でブックを保存しますか?」 → このまま保存するため「はい」を選択 これでバッチリOK!…かと思われたのですが、 元の編集前の○○.txt は"名前","ヨミ","電話番号1", …… ""とカンマ区切りであったのが、 編集後の○○.txtは名前 ヨミ 電話番号1  …… タブ区切り(?) となってしまっています。 (CSVファイルとしてはタブ区切りでも問題ないのでしょうが…) どうすれば元のカンマ区切りの形式のまま保存できますでしょうか。 アドバイスよろしくお願い致します。

  • CSVでタブ区切り

    はじめまして。エクセル2003を使用中です。 データのやり取りをする際に 「エクセルのデータをCSVでタブ区切り」に変換して送って欲しい と言われました。 保存時に 「名前を付けて保存」→「ファイルの種類」で「SCV」を選択すると「,」で区切られますよね? これを簡単にタブ区切りにしたいのですが・・そんな方法はありますでしょうか? 現在は一旦TXT形式で保存し、ファイル名を直接「CSV」に変更しています。 実は常時この作業を行う者がPCに詳しくない為、できる限りわかりやすく作業を行いたいのです。 不明点があれば補足させていただきますので アドバイス等ございましたらどうぞよろしくお願いします。

  • タブ区切りのテキストファイルをCSVに変換する

    仕事でシステムにファイルを読み込ませるために利用します。 取得できるファイルはタブ区切りのテキストファイルです。 システムが取り込めるデータは、CSVファイルです。(ゆうパックプリント) システムに取り込む為に、取得したタブ区切りのテキストファイルを、一度CSVに変換する必要があるようです。この場合どのような方法で変換が可能でしょうか? タブ区切りのテキストファイル→CSVファイルに変換 をドラッグで簡単にできるようなアプリがあれば、是非紹介して頂きたいです。 パソコンはWindows8 , Mac OS X とありますが、システムはWindows用のシステムの為、出来ればWindowsのアプリがあると助かります。 よろしくお願いします。

  • Excel VBAにてCSVファイルを読みたい

    ExcelにてCSVファイルを読んで処理をしたい。 ただし、CSVファイルをExcelでopenすると遅いので、 VBAにてファイルとして読み込みで処理をしたいのですが、 皆さんは、どのように行っていますか? ※CSVファイルは、テキスト区切り→"(ダブルコーテーション)です  テキスト区切り無しであれば、1行読んで、カンマをsplitすれば良いと思いますが。。。。

  • EXCEL VBAでのCSVファイルの編集

    CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。

  • カンマ区切り形式ではなく、セミコロン区切り形式のCSVファイルを作りた

    カンマ区切り形式ではなく、セミコロン区切り形式のCSVファイルを作りたいのですが、どのようにしたらよいのでしょう。困っています。