Excel VBAでテキストファイルの読込み|OpenとLineInputの使い方

Excel VBAでOpenとLine Inputを使ったテキストファイルの読込み方法です。

スポンサーリンク



Homeに戻る > Excel ファイル操作のTipsへ

Excel VBAでテキストファイルの読込む順は下記になります。

  1. Openステートメントでファイルを開きます。
  2. Line Inputステートメントで一行読みます。
    これをEOFになるまで繰り返します。
    EOFとは、「End Of File」の略でファイルの現在位置が末尾になればTrueを返す関数です。
  3. 最後にCloseステートメントでファイルを閉じます。

ここでは「メールをすぐに送信する」Excel VBA Tipsで作成された、メール送信ログファイルを使用します。

このログファイルは日付や時間等がスペースで区切られています。

Line Inputステートメントは一行単位で読み込むので、この文字列を区切られたスペースで分解し配列に格納するVBAで掲載しています。

配列に格納したデータは順にセルに表示しています。

文字列の分解はSplit関数を使用しています。

Openステートメントの構文

Open PathName For Input [Lock] As #FileNumber

Line Inputステートメントの構文

Line Input #FileNumber, VarName

Close関数の構文

Close [#FileNumber1] [, #FileNumber2 …]


ファイル読み込み関連の記事「INIファイルへの書き込み/読込み」を掲載しています参照してください。




テキストファイルを読み込むExcel VBA

Excel VBA コード

Option Explicit

'文字列の分解
Private Sub ExSplit(lr As Long, str As String)
    Dim buf As Variant
    Dim i As Integer
    Dim lcol As Long
    
    lcol = 6
    '文字列から1 次元配列を作成
    buf = Split(str, " ")
    For i = 0 To UBound(buf)
        If buf(i) <> "" Then
            Debug.Print buf(i)
            '分解文字の表示
            Cells(lr, lcol) = buf(i)
            lcol = lcol + 1
        End If
    Next i
End Sub


'テキストファイルの読込み
Private Sub ExTxtRead()
    Dim fn As Long
    Dim tmp As String
    Dim fname As String
    Dim lrow As Long
    
    '表示開始行
    lrow = 3
    '対象ファイル名
    fname = "c:\mail_test\log.txt"
    '使用可能なファイル番号を取得
    fn = FreeFile
    'ファイルを開く
    Open fname For Input As #fn
        Do Until EOF(fn)
            '一行読込み
            Line Input #fn, tmp
            '文字列の分解
            ExSplit lrow, tmp
            '次の行へ
            lrow = lrow + 1
        Loop
    Close #fn
End Sub

Private Sub CommandButton1_Click()
    ExTxtRead
End Sub

スポンサーリンク


Excelシート画面

「テキストファイルの読込み」ボタンをクリックすると、ファイルが読み込まれ、分解結果がF3セルから表示されます。

読み込むファイル名は「c:\mail_test\log.txt」です。

スポンサーリンク




Homeに戻る > Excel ファイル操作のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved