Sub Sample1()
Dim buf As String, dmp As String, i As Long
buf = Range("B2").Text
For i = 1 To LenB(buf)
dmp = dmp & Hex(AscB(MidB(buf, i, 1))) & " "
Next i
MsgBox dmp
End Sub
Sub Sample2()
Dim buf As String, dmp As String, i As Long
buf = "田中" & Chr(13) & Chr(10) & "123" ''0D 0Aの改行コード
Range("C2") = buf
buf = Range("C2").Text
For i = 1 To LenB(buf)
dmp = dmp & Hex(AscB(MidB(buf, i, 1))) & " "
Next i
MsgBox dmp
End Sub
Alt+Enterキーで改行した場合とは違い、今度は「D 0 A 0」のように0D 0Aの改行コードが入力されているのがわかります。
Sub ボタン1_Click() ''[保存]ボタン
Open "C:\Data.txt" For Output As #1
Print #1, Range("C4")
Close #1
End Sub
Sub ボタン2_Click() ''[閲覧]ボタン
Dim buf As String
Open "C:\Data.txt" For Input As #1
Line Input #1, buf
Close #1
buf = "※データの1行目" & vbCrLf & buf
MsgBox buf
End Sub
特に難しくないコードです。ですが、実行結果は次の通り。
問題のC:\Data.txtをメモ帳で開いてみると、次のように表示されます。
Line Inputメソッドはファイルから1行分のデータを読み取る命令ですが、この「1行分」とは改行コード(0D 0A)までという意味です。Windowsの改行コードは0D 0Aですので、セル内に記録されていた改行コード0Aだけでは、改行されていると認識されないのです。