EXCEL - VBA テキストファイルの読込

テキストファイルをEXCELに読込んで見やすく整形したかった。

テキストファイルを1行づつ読込み、A1, A2, A3…とういうようにA列に設定する

改行コードはCRLF

Option Explicit

Sub funcTest()
    Dim buf As String
    Dim wkRow As Integer

    Open "d:\\data.txt" For Input As #1
    wkRow = 1
    Do Until EOF(1)
        Line Input #1, buf
        Cells(wkRow, 1) = buf
        wkRow = wkRow + 1
    Loop
    Close #1
End Sub

テキストファイルを1行づつ読込み、A1, B1, C1…とういうように1行に設定する

改行コードはCRLF

Option Explicit

Sub funcTest()
    Dim buf As String
    Dim wkColumn As Integer

    Open "d:\\data.txt" For Input As #1
    wkColumn = 1
    Do Until EOF(1)
        Line Input #1, buf
        Cells(1, wkColumn) = buf
        wkColumn = wkColumn + 1
    Loop
    Close #1
End Sub

A列にファイル名、B列以降にファイルの内容を表示したい

改行コードはCRLF

Option Explicit

Sub funcTest()
    Dim buf As String
    Dim wkColumn As Integer

    Open Cells(1, 1).Value For Input As #1
    wkColumn = 2 ' B列から貼り付ける
    Do Until EOF(1)
        Line Input #1, buf
        Cells(1, wkColumn) = buf
        wkColumn = wkColumn + 1
    Loop
    Close #1
End Sub

A列にファイル名、B列に何行目から読込むか、C列以降にファイルの内容を表示したい

改行コードはCRLF

// EXCEL マクロ実行前
A       B
data.txt 1 
// data.txt
aaa
bbb
ccc
// EXCEL マクロ実行後
A       B   C   D   E
data.txt 1  aaa bbb ccc
Option Explicit

' ファイル(改行コードCRLF)読み込んで内容を表示
' A列にファイル名(フルパス)
' B列に何行目から読込むかの行番号
' C列にファイルから読込んだ値、行を1列づつ表示する
' フォーマット
' ファイル名 何行目から読込むか 読込んだX行目 読込んだX+1行目 読込んだX+2行目...
Sub funcTest()
    Dim buf As String
    Dim wkColumn As Integer
    Dim wkFilename As String
    Dim wkStartLineNo As Integer
    Dim curLineNo As Integer
    
    wkFilename = Cells(1, 1).Value ' A列
    wkStartLineNo = Cells(1, 2).Value   ' B列
    curLineNo = 0 ' ファイルの現在の読込み位置、XX行目の意味
    
    Open wkFilename For Input As #1
    wkColumn = 3 ' C列から貼り付ける
    
    Do Until EOF(1)
        curLineNo = curLineNo + 1
        Line Input #1, buf
        
        If (curLineNo >= wkStartLineNo) Then
            Cells(1, wkColumn) = buf
            wkColumn = wkColumn + 1
        End If
        
    Loop
    Close #1
End Sub

A列にファイル名、B列に何行目から読込むか、C列以降にファイルの内容を表示したい

改行コードはLF

Option Explicit

' ファイル(改行コードCRLF)読み込んで内容を表示
' A列にファイル名(フルパス)
' B列に何行目から読込むかの行番号
' C列にファイルから読込んだ値、行を1列づつ表示する
' フォーマット
' ファイル名 何行目から読込むか 読込んだX行目 読込んだX+1行目 読込んだX+2行目...
Sub funcTest()
    Dim buf As String
    Dim wkColumn As Integer
    Dim wkFilename As String
    Dim wkStartLineNo As Integer
    Dim curLineNo As Integer
    Dim tmp As Variant
    Dim tmp2 As Variant
    Dim i As Integer
        
    wkFilename = Cells(1, 1).Value ' A列
    wkStartLineNo = Cells(1, 2).Value   ' B列
    wkColumn = 3 ' C列から貼り付ける
    curLineNo = 0 ' ファイルの現在の読込み位置、XX行目の意味
    
    Open wkFilename For Input As #1
        Line Input #1, buf
    Close #1
    
    tmp = Split(buf, vbLf)
    
    For i = 0 To UBound(tmp) - 1
        curLineNo = curLineNo + 1
        If (curLineNo >= wkStartLineNo) Then ' 指定行まで読み飛ばす処理
        
            tmp2 = Split(tmp(i), ",")
            Cells(1, wkColumn).Resize(1, UBound(tmp2) + 1).Value = tmp2
            wkColumn = wkColumn + 1
        End If
    Next i
End Sub

A列にファイル名、B列に何行目から読込むか、C列以降にファイルの内容を表示したい

改行コードはLF
1行目から3行目までを処理する

Option Explicit

' ファイル(改行コードCRLF)読み込んで内容を表示
' A列にファイル名(フルパス)
' B列に何行目から読込むかの行番号
' C列にファイルから読込んだ値、行を1列づつ表示する
' フォーマット
' ファイル名 何行目から読込むか 読込んだX行目 読込んだX+1行目 読込んだX+2行目...
Sub funcTest()
    Dim buf As String
    Dim wkColumn As Integer
    Dim wkFilename As String
    Dim wkStartLineNo As Integer
    Dim curLineNo As Integer
    Dim tmp As Variant
    Dim tmp2 As Variant
    Dim i As Integer
    Dim sheetLine As Integer
   
    For sheetLine = 1 To 3 ' 1行目から3行目まで対象とする
        wkFilename = Cells(sheetLine, 1).Value ' A列
        wkStartLineNo = Cells(sheetLine, 2).Value   ' B列
        wkColumn = 3 ' C列から貼り付ける
        curLineNo = 0 ' ファイルの現在の読込み位置、XX行目の意味
    
        Open wkFilename For Input As #1
            Line Input #1, buf
        Close #1
    
        tmp = Split(buf, vbLf)
        
        For i = 0 To UBound(tmp) - 1
            curLineNo = curLineNo + 1
            If (curLineNo >= wkStartLineNo) Then ' 指定行まで読み飛ばす処理
            
                tmp2 = Split(tmp(i), ",")
                Cells(sheetLine, wkColumn).Resize(1, UBound(tmp2) + 1).Value = tmp2
                wkColumn = wkColumn + 1
            End If
        Next i
    Next sheetLine
End Sub

A列にファイル名、B列に何行目から読込むか、C列以降にファイルの内容を表示したい

改行コードはLF
「For sheetLine = 1 To 3 ' 1行目から3行目まで対象とする」を
「For sheetLine = 1 To Cells(Rows.Count, 1).End(xlUp).row」に書き換える

Option Explicit

' ファイル(改行コードCRLF)読み込んで内容を表示
' A列にファイル名(フルパス)
' B列に何行目から読込むかの行番号
' C列にファイルから読込んだ値、行を1列づつ表示する
' フォーマット
' ファイル名 何行目から読込むか 読込んだX行目 読込んだX+1行目 読込んだX+2行目...
Sub funcTest()
    Dim buf As String
    Dim wkColumn As Integer
    Dim wkFilename As String
    Dim wkStartLineNo As Integer
    Dim curLineNo As Integer
    Dim tmp As Variant
    Dim tmp2 As Variant
    Dim i As Integer
    Dim sheetLine As Integer
   
    ' For sheetLine = 1 To 3 ' 1行目から3行目まで対象とする
    For sheetLine = 1 To Cells(Rows.Count, 1).End(xlUp).row ' A列に値があるものを取得する

        wkFilename = Cells(sheetLine, 1).Value ' A列
        wkStartLineNo = Cells(sheetLine, 2).Value   ' B列
        wkColumn = 3 ' C列から貼り付ける
        curLineNo = 0 ' ファイルの現在の読込み位置、XX行目の意味
    
        Open wkFilename For Input As #1
            Line Input #1, buf
        Close #1
    
        tmp = Split(buf, vbLf)
        
        For i = 0 To UBound(tmp) - 1
            curLineNo = curLineNo + 1
            If (curLineNo >= wkStartLineNo) Then ' 指定行まで読み飛ばす処理
            
                tmp2 = Split(tmp(i), ",")
                Cells(sheetLine, wkColumn).Resize(1, UBound(tmp2) + 1).Value = tmp2
                wkColumn = wkColumn + 1
            End If
        Next i
    Next sheetLine
End Sub

この記事が気に入ったらサポートをしてみませんか?