[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『[VBA] 改行が一部だけ認識されない』(ガパオライス)
はじめまして。
今、見様見真似でVBAの練習をしています。
以下のコードで実行しているのですが、
特定の箇所が改行してあるのに同じセルに取り込まれてしまいます。
Sub テキスト読み込み()
Dim txt As String
txt = Application.GetOpenFilename("text,*.txt")
If txt = "False" Then Exit Sub End If Close #1
Range("A:C").ClearContents Open txt For Input As #1
Do Until EOF(1) Dim buf As String Dim n As Long Dim bufbuf As Variant Dim i As Long
Line Input #1, buf If buf <> "" Then bufbuf = Split(buf, vbTab) '読み込んだ行をタブ区切りで配列変数に格納
For i = LBound(bufbuf) To UBound(bufbuf) Cells(n + 7, i + 1) = bufbuf(i) Next n = n + 1 End If Loop
Close #1
End Sub
該当の事象が発生する箇所をコピペして別のtxtにして保存したら
なぜか改行を認識してくれて、下のセルに取り込めました。
コピペすると事象が発生しなくなるせいで、原因がわからなくなりました。
このような事象に心当たりの方はいらっしゃいませんか?
よろしくお願いいたします。
< 使用 Excel:Office365、使用 OS:Windows10 >
多分そこだけ改行コードが違うのではないでしょうか
このマクロでは、改行コードが CRLF (&H0D&H0A)か CR でないといけません 問題のところは、LF だけになっているのだと想像します。
バイナリで中身を見ることができるエディタがあれば、確認できると思うのですが。 (´・ω・`) 2021/03/19(金) 14:10
>このマクロでは、改行コードが CRLF (&H0D&H0A)か CR でないといけません
なるほど…検索したらline inputの仕様なのですね。
まさか一部だけ改行コードが違うとは思っていませんでした。
出てきた回避方法を一度自分で読んで理解してみようと思います!
ありがとうございました!
(ガパオライス) 2021/03/19(金) 14:16
Sub txt読み込み()
Dim txt As String
txt = Application.GetOpenFilename("Text,*.txt")
If txt = "False" Then Exit Sub End If Close #1
Application.ScreenUpdating = False Application.Calculation = xlCalculationManual
Range("A:C").ClearContents Open txt For Input As #1
Do Until EOF(1) Dim buf As String Dim buf2 As Variant Dim i As Long Dim j As Long Dim n As Long Dim buf3 As Variant
Line Input #1, buf If buf <> "" Then
buf2 = Split(buf, vbLf)
If buf2(0) = buf Then For i = 0 To UBound(buf2) buf3 = Split(buf2(i), vbTab) Next For i = 0 To UBound(buf3) Cells(n + 7, i + 1) = buf3(i) Next n = n + 1 Else For j = 0 To UBound(buf2) Cells(n + 7 + j, 1) = buf2(j) Next n = n + 1 + j End If
End If Loop
Close #1
Application.ScreenUpdating = True Application.Calculation = xlCalculationAutomatic
End Sub (ガパオライス) 2021/03/19(金) 16:17
エクセルの機能があるなら、なるべくそれを使うのがいいです。 マクロの記録をしてみるとどんなコードを書けばいいのかなんとなくわかります
私は、2013で、365使ったことないので、 テキストファイルウィザード とか、 データの取得と変換 とか PowerQuery とかで検索してみてください。 (´・ω・`) 2021/03/19(金) 16:36
そういやFileSystemObjectのTextStreamならLF改行でも1行ずつ読込めたと思います。
(白茶) 2021/03/19(金) 16:51
ps.取得と変換で作業したらとても早くなりました。
オブジェクトの扱いに慣れていないので、PowerQueryの機能でできない部分を
上手く加工するのが大変ですが、少しづつ前に進めたらと思います。
ありがとうございました。
(ガパオライス) 2021/03/22(月) 10:26
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.