- ベストアンサー
テキストファイル(tsv)の改行方法について
- WindowsXP環境でtsvファイルを扱う際に、改行がされない問題について解決方法をお伝えください。
- 現在、改行がない状態のtsvファイルの3つめのタブを改行に変更したいです。
- VBScriptを使用して改行を実現しようとしていますが、うまくいっていません。他の方法で改行を行う手段があれば教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
とりあえずこういうスクリプトですね。 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 ※ファイル名は適当に変更してください。 ※インデントに漢字空白を使用しています。 コピペ注意
その他の回答 (4)
- mt2008
- ベストアンサー率52% (885/1701)
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
お礼
実現できました。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
文字列ストリームを変数に読み込み、Instr(VBScriptの関数にもあり、VB(A)と同じ)でTABコード(水平タブ,多分Chr(9)) を見つけ、3個目ごとにvbCrlLf に置き換えていけば良いはず。 Instr関数は第1引数に開始位置を指定できるので、尺取り虫的に、開始位置をずらしては。Instr関数をかける。見つかった場所に次の文字が探索開始場所にする。 TABコードは、VBScriptでもvbTabが使えるはず。 >、なかなかうまくいきません。 質問者が使用経験がすくないだけでは。 データ例を作っても、質問者の場合と同じかどうか判らないので、コードはここでは省略する。 16進表示でデータの一部でも挙げれば情況がわかるが。
お礼
> 質問者が使用経験がすくないだけでは。 お察しの通りです。この件で初めてVBScriptに触れました。 今後も勉強します。ありがとうございました。
- layy
- ベストアンサー率23% (292/1222)
>3つめのタブを 改行コードよりは悩みどころでは?。 改行はCRLF、ここではVBCRLFか。 CRとLF、CRはCHR(13)でLFはCHR(10)です。 よってCHR(13)&CHR(10)。 TABはCHR(9) CHR(9)を変数xに格納して、INSTRで3つめを見つける。 そんなところか・・・。
お礼
参考になりました。 ご回答ありがとうございます。
- tsuduki123
- ベストアンサー率32% (21/65)
CHR関数だったかな文字コードを直接指定して改行を出してあげればいけるはずですよ WScript.Echo "こそこそ" & CHR(13) & CHR(10) & "ごにょごにょ"
お礼
参考になりました。 ご回答ありがとうございます。
お礼
実現できました! 非常に素早いご教授ありがとうございます。