• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:テキストファイル(tsv)を改行したい)

テキストファイル(tsv)の改行方法について

このQ&Aのポイント
  • WindowsXP環境でtsvファイルを扱う際に、改行がされない問題について解決方法をお伝えください。
  • 現在、改行がない状態のtsvファイルの3つめのタブを改行に変更したいです。
  • VBScriptを使用して改行を実現しようとしていますが、うまくいっていません。他の方法で改行を行う手段があれば教えてください。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

とりあえずこういうスクリプトですね。 Dim FSO Dim InFile Dim OutFile Dim Text, Char, Count Set FSO = CreateObject("Scripting.FileSystemObject") Set InFile = FSO.OpenTextFile("C:\~", 1) Set OutFile = FSO.CreateTextFile("C:\~", True) Do Until InFile.AtEndOfStream     Count = 0     Text = ""     Do Until InFile.AtEndOfStream         Char = InFile.Read(1)         If Char = vbTab Then             Count = Count + 1             If Count = 3 Then Exit Do         End If         Text = Text & Char     Loop     OutFile.WriteLine Text Loop OutFile.Close InFile.Close ※ファイル名は適当に変更してください。 ※インデントに漢字空白を使用しています。  コピペ注意

PTCr
質問者

お礼

実現できました! 非常に素早いご教授ありがとうございます。

その他の回答 (4)

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.5

tsvファイルが複数行有るのか解らなかったけど、取りあえず複数行あってもいい様にしてみました。 例ではc:\test.tsvを整形した物をc:\test2.tsvに出力しています。 Set fso = CreateObject("Scripting.FileSystemObject") Set inFile = fso.OpenTextFile("c:\test.tsv") Set outFile = fso.CreateTextFile("c:\test2.tsv") Do Until inFile.AtEndOfStream   nTab = 0   tempLine = inFile.ReadLine   For i = 1 To Len(tempLine)     one = Mid(tempLine, i, 1)     If one = vbTab Then            nTab = nTab + 1       If nTab >= 3 Then         one = vbCrLf         nTab = 0       End If     End If     outFile.Write one   Next   outFile.Write vbCrLf Loop    inFile.Close outFile.Close

PTCr
質問者

お礼

実現できました。 ありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

文字列ストリームを変数に読み込み、Instr(VBScriptの関数にもあり、VB(A)と同じ)でTABコード(水平タブ,多分Chr(9)) を見つけ、3個目ごとにvbCrlLf に置き換えていけば良いはず。 Instr関数は第1引数に開始位置を指定できるので、尺取り虫的に、開始位置をずらしては。Instr関数をかける。見つかった場所に次の文字が探索開始場所にする。 TABコードは、VBScriptでもvbTabが使えるはず。 >、なかなかうまくいきません。 質問者が使用経験がすくないだけでは。 データ例を作っても、質問者の場合と同じかどうか判らないので、コードはここでは省略する。 16進表示でデータの一部でも挙げれば情況がわかるが。

PTCr
質問者

お礼

> 質問者が使用経験がすくないだけでは。 お察しの通りです。この件で初めてVBScriptに触れました。 今後も勉強します。ありがとうございました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.3

>3つめのタブを 改行コードよりは悩みどころでは?。 改行はCRLF、ここではVBCRLFか。 CRとLF、CRはCHR(13)でLFはCHR(10)です。 よってCHR(13)&CHR(10)。 TABはCHR(9) CHR(9)を変数xに格納して、INSTRで3つめを見つける。 そんなところか・・・。

PTCr
質問者

お礼

参考になりました。 ご回答ありがとうございます。

回答No.1

CHR関数だったかな文字コードを直接指定して改行を出してあげればいけるはずですよ WScript.Echo "こそこそ" & CHR(13) & CHR(10) & "ごにょごにょ"

PTCr
質問者

お礼

参考になりました。 ご回答ありがとうございます。

関連するQ&A