
CR,LF,CRLFが混在しているテキストで難儀しております。
VB.NETでReadLine()を使えば、どんな改行コードでも削除した文字列を取得できますが、同じ内容を書き込む場合にどのような改行コードわからないと同じファイルができません。
安直にNewLineやWriteLine()を使うと、どんな改行コードでWindowsの場合はCRLFになります。
ReadLine()で取得した文字列+改行コードがわかる方法がありますか?
以下、例です。
dim s as String
Dim sr As New System.IO.StreamReader("yomu", "ISO-2022-JP")
Dim sw As New System.IO.StreamWriter("kaku", false, "ISO-2022-JP")
While sr.Peek() > -1
s = sr.ReadLine() '改行文字を取り除いた文字列
sw.Write(s) '書き込む
end While
sr.close()
sw.close()
No.3ベストアンサー
- 回答日時:
下記の方法で確認できます。
Dim cn As integer
Dim cbuf As String
Dim cLine() As String
cbuf = "".PadLeft(CInt(FileSystem.FileLen("C:\sbj\temp\aaaa.txt")))
FileSystem.FileOpen(1, "aaaa.txt", OpenMode.Binary, OpenAccess.ReadWrite, OpenShare.Default)
FileSystem.FileGet(1, cbuf)
cbuf = Replace(cbuf, Chr(13) & Chr(10), Chr(12))
cbuf = Replace(cbuf, Chr(10), Chr(10) & Chr(13) & Chr(10))
cbuf = Replace(cbuf, Chr(13), Chr(13) & Chr(13) & Chr(10))
cbuf = Replace(cbuf, Chr(12), Chr(13) & Chr(10))
cLine=split(cbuf,Chr(13) & Chr(10)) ' 行変数 cLine に代入
for cn=0 to cLine.Length-1 ' 行数分ループ
If cLine(cn).Length>0 then
If cLine(cn).Substring(cLine(cn).Length - 1, 1) = Chr(10) Then
<===============> 最後の文字はLF
ElseIf cLine(cn).Substring(cLine(cn).Length - 1, 1) = Chr(13) Then
<===============> 最後の文字はCR
Else
<===============> 最後の文字はCRLF
End If
Else
<===============> 最後の文字はCRLF
End if
next cn
No.2
- 回答日時:
昔ながらのOpenステートメントを使って
Open "ファイルのフルパス" For Binary Lock Read Write As #1
なんてやります
ただ、今度は改行が拾えなくなるので、該当する改行コード(CR,LF,CRLF)の何れかに当たったら、その部分が改行と判断します
例えば拾ったとあるコードがCRかどうかの判断は
If MidB(buf,i,1) = Chr(13) then
てな感じ(Chr(13)はvbCRでも良かったはず)
この改行コードの入っていた位置と組み合わせ(CRLF= Chr(13) & Chr(10))をご自身で作った改行コードごとに行った作業の終了後に、ひとつなぎの文字列に戻してやれば理論上可能です
○CR□LF
↓
○=△
□=◇
↓
△CR◇LF
コレを書き出す
メモリの都合で難しい時は、Appendを使って追記して行けるので、一気にメモリに入れなくても分けて作業できます
コードに起こすと、結構な量なので概念(?)だけ
参考にするならこの辺り
http://www.asahi-net.or.jp/~ef2o-inue/vba_o/sub0 …
http://officetanaka.net/excel/vba/file/file08.htm
http://yumi-ii.squares.net/archives/2005/09/2005 …
No.1
- 回答日時:
文字列じゃなくてバイナリとして走査する形の物にしないと無理だね。
文字列は改行は改行としてしか扱ってくれないけれどバイナリなら「文字コード」という名の数値データでしかなくなるから。
VBでどうやるのかは判らない。ゴメン
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Vbaで数式をポーランド記法に変換するコードを作って実行しようとするとフリーズします。 1 2022/05/24 17:53
- Visual Basic(VBA) VBA 改行コードの取り方 1 2022/03/22 14:14
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) ファイル名の右側を変更したい ファイル名:「1001日別売上」の左側へ「2022」を追加し、「202 6 2022/10/14 10:03
- Visual Basic(VBA) サブフォルダ(データ)にある複数の.xlsxファイルのSheet3のA2セルの値で01から左側をB2 2 2022/08/14 15:46
このQ&Aを見た人はこんなQ&Aも見ています
-
CSVファイルの改行コード判別
Visual Basic(VBA)
-
VBSにて改行コードの検出・置換
Visual Basic(VBA)
-
【VB6】項目内に改行コードを含むCSVファイルの読み込み
Visual Basic(VBA)
-
-
4
(VBS) テキストファイル読込での改行コード
その他(プログラミング・Web制作)
-
5
フォームの再読み込み
Visual Basic(VBA)
-
6
「タイプ初期化子が例外をスローしました」エラー何?
Visual Basic(VBA)
-
7
Winmerge ファイルの中身は同じなのに黄色くなる
その他(OS)
-
8
100万行のCSVを10万行ずつのファイルに区切るには?(UTF-8、改行LF)
Excel(エクセル)
-
9
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
10
【VB.NET】App.configにファイルパスを設定して読み込みたい
Microsoft ASP
-
11
Access Error3061 パラメータが少なすぎます。4を指定してください。
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
jsp 改行コードで改行させて表...
-
Excel VBAからBeckyを起動して...
-
textareaに改行を入れても、CSV...
-
VBAでCSVをExcelに取り込む時に...
-
改行コード再
-
【VBA】エクセルで最後の不要な...
-
【C#】文字列の最後に改行を入...
-
テキストボックス行の桁数を制...
-
\\nと\\rの違い
-
エクセルVBAのprintステートメ...
-
VisualBasicの改行コード
-
JSPでCSVのダウンロード処理
-
マクロでセル内の改行を削除す...
-
VBA テキストボックスの行数取得
-
WriteFile関数
-
変数の中の改行コードをBRタグ...
-
POSTで改行コードを受け渡すには
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
C++で空Enterの入力を判...
-
VBAでCSVをExcelに取り込む時に...
-
改行について
-
改行を読み飛ばす
-
テキストボックス行の桁数を制...
-
C# DataGridViewのセルを改行禁...
-
LaTeX: captionの中で改行した...
-
JAVA System.out.println の ...
-
エクセルVBA 文字列領域が不足...
-
最終行の改行について
-
グレープシティのSPREAD...
-
【VBA】エクセルで最後の不要な...
-
jsp 改行コードで改行させて表...
-
ラベル(スタティックテキスト)...
-
1行ごとに取得して、その改行...
-
ファイルから読み取った改行文...
-
JavaDoc コメントの改行について
おすすめ情報