検索

キーワード


目次

【Excel VBA】 改行コード(LF と CRLF)

  • 公開日:2026-07-13 10:25:40
  • 最終更新日:2026-07-12 19:41:29

Workteria(ワークテリア)では難易度の高いものから低いものまで、スキルや経験に合わせた案件を多数揃えています。会員登録は無料ですので、ぜひ会員登録してご希望の案件を探してみてください!

フリーランス/正社員のエンジニアとして活躍するには、ご自身のスキルや経験に合わせた仕事を選ぶことが大切です。ご希望の案件がみつからない場合はお気軽にお問い合わせください!ユーザ満足度の高いキャリアコンサルタントが在籍していますので、希望条件や悩み事などなんでもご相談ください。ご希望にピッタリの案件をご紹介させていただきます。

皆様、お久しぶりです。エンジニアのIMMRです。

今までちょっと忙しく、バタバタして時間がなかったのですが、また時間が出来たので書いていこうと思いますので、よろしくお願い致します。

今回は、改行コードを説明していきます。


例えば、下記のようなテキストのLOGデータがあるとします。


図1 LOGデータ



テキストのLOGデータの1行1行を1つのセルに記載したい。

イメージとしてはこのような感じ



図2 イメージ図


にしたい。と思ったので

読み込みは、テキスト形式だから

Line Input で1行ずつ読んでやればいいと思い、下記のコードを作成しました。


Sub abc()
    Dim i As Long
    Dim INFile As String
    Dim Data As String
    
    INFile = "C:\Users\T\LOG_A.txt"
    
    Open INFile For Input As #1
        i = i + 1

        Do Until EOF(1)
            Line Input #1, Data
            ThisWorkbook.Sheets("Sheet1").Cells(i, 1).Value = Data
            i = i + 1
        Loop

    Close
    MsgBox "終了"
End Sub

プログラムコード1


そして、実行を行うと


図3 プログラム実行結果


となり、1つのセルになってしまいます。


なぜこのようになってしまうのかと焦ってしまいました。


なぜこうなるのか。

WEBや本で調べるとこれは改行コードが「Lf」「CrLf」が違うみたいです。

Line Inputでの読み込みはCrLfを対象に行っているみたいなので、Lfを対応していないみたいです。


そもそも「Lf」と「CrLf」ってなにが違うのというところですが

イメージはこんな感じです。


図4 改行コードのLfとCrLf


テキストのファイルを目視しただけでは、わからないですよね。目では見えないけど改行コードが設定されています。

このような感じで実際は「Lf」の改行コードであったのに「CrLf」専用のLine Inputで読み込んでしまったため、

正しく読み込めなかったのです。


では、どうすればよいか。というと

「ADODB.Stream」を使用します。

そうすれば、改行コードなどを正確に読み取ることができます。


Sub abc()

Dim INFile As String
Dim stream As Object
Dim txtData As String
Dim i As Long
Dim Data As Variant
Dim textData As Variant
Dim Row As Long

INFile = "C:\Users\T\LOG_A.txt"

Set stream = CreateObject("ADODB.Stream")
stream.Type = 2
stream.Charset = "UTF-8"

stream.Open
stream.LoadFromFile INFile

textData = stream.ReadText

stream.Close
Set stream = Nothing

Row = 1

Data = Split(textData, vbLf)

For i = LBound(Data) To UBound(Data)
    Cells(Row, 1) = Data(i)
    Row = Row + 1
Next i

MsgBox "終了"

End Sub

プログラムコード2


プログラムコードは上記のような感じで

CreateObjectを作成し、Type = 2 'テキストデータ、Charset = "UTF-8"(LFを含む文字コード) 

を作成して、という感じで読んでいきます。

読んだデータをtextDataに代入して、

そのデータ(textData)をSplitで分けてセルに代入していきます。


そうして、このプログラムを実施したところ

図5 プログラムコード2の実行結果


CreateObjectを使用することにより、先ほどのように1つのセルの中で表示されるというとがなくなり、

1行1行表示することが出来ました。


【著者】

Imamura

「挑戦心」を忘れずに、新しいことにチャレンジしています。 資格:VBAエキスパート Excel VBA(ベーシック/スタンダード) 等

編集した記事一覧

正社員/フリーランスの方でこのようなお悩みありませんか?

  • 自分に合う案件を定期的に紹介してもらいたい
  • 週2、リモートワークなど自由な働き方をしてみたい
  • 面倒な案件探し・契約周りは任せて仕事に集中したい

そのような方はぜひ、Workteriaサイトをご利用ください!

  • 定期的にご本人に合う高額案件を紹介

  • リモートワークなど自由な働き方ができる案件多数

  • 専属エージェントが契約や請求をトータルサポート

よく読まれている記事