【エクセルマクロ】テキストファイルを読み込んで、配列に追加する

エクセルマクロ テキストファイルの値を配列へ格納アイキャッチ エクセルマクロで効率化する

エクセルマクロで、テキストファイルを読み込んで、配列に追加するVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

テキストファイルを読み込み、1次元配列に格納

以下のマクロを実行すると、指定したテキストファイルを読み込んで配列に追加します。

Sub テキストファイルを読込し、値を一次元配列へ追加()
 
Dim WordListAddress As String
Dim TxtFileList As String
Dim InputCnt As Long
Dim TxtNum  As Long
Dim InputWord() As String
Dim TxtFile As String
Dim Buf As Variant
Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")
     
    'テキストファイルのパスを指定
    WordListAddress = "C:\Users\admin\Desktop\テスト\チェックリスト.txt"
 
    'テキストファイルのファイル名を拡張子つきで取得
    TxtFileList = fso.GetFileName(WordListAddress)
 
    TxtNum = FreeFile
     
    Open WordListAddress For Input As TxtNum
                 
        While Not EOF(1)
            Line Input #TxtNum, TxtFileList
             
            '単語をカンマ区切り「,」で抽出
            Buf = Split(TxtFileList, ",")
             
            '配列の要素数を変更
            ReDim Preserve InputWord(InputCnt)
             
            '配列にテキストファイルの値を入れる
            InputWord(InputCnt) = Buf(0)
             
            InputCnt = InputCnt + 1
        Wend
         
    Close TxtNum
     
End Sub

 

マクロ実行後

変数 [WordListAddress] にテキストファイルのファイルパスを入力してデータを読み込みします。
1次元配列に、テキストファイルのデータを格納しました。


 

テキストファイルの入力内容

カンマ区切りで入力します。
1行に1語入力し、各行の最後に「,(カンマ)」を入力します。


 

VBAコードの解説

[Buf = Split(TxtFileList, “,”)] は、
Split関数を使ってテキストファイルの値を「,(カンマ)」で区切って取得します。
Buf(0)の値を配列に入れます。

テキストファイルの値を配列へ格納したときのウォッチウィンドウ
 
 

テキストファイルを読み込み、2次元配列に格納(パターン1)

以下のマクロを実行すると、選択したテキストファイルを読み込んで配列に追加します。

Sub 選択したテキストファイルを読込し、データを二次元配列へ追加()

Dim WordListAddress As String
Dim TxtFileList As String
Dim InputCnt As Long
Dim TxtNum  As Long
Dim InputWord(100, 1) As Variant
Dim TxtFile As String
Dim Buf As Variant
Dim i As Long
Dim fso As Object

    Set fso = CreateObject("Scripting.FileSystemObject")

    'テキストファイル選択し、パス取得
    With Application.FileDialog(msoFileDialogOpen)
        .Show
        
        If .SelectedItems.Count = 0 Then
            'ファイルを選択していない場合
            Exit Sub
        Else
            '選択したテキストファイルのフルパスを変数に格納
            WordListAddress = .SelectedItems.Item(1)
        End If
    End With
    
    'テキストファイルのファイル名を拡張子つきで指定
    TxtFileList = fso.GetFileName(WordListAddress)
    TxtNum = FreeFile
       
    Open WordListAddress For Input As TxtNum
        While Not EOF(1)
            Line Input #TxtNum, TxtFileList
            
            '単語をカンマ区切り「,」で抽出
            Buf = Split(TxtFileList, ",")
            
            For i = 0 To UBound(Buf)
                InputWord(InputCnt, i) = Buf(i)
            Next i
            
            InputCnt = InputCnt + 1
        Wend
    Close TxtNum
    
End Sub

 

マクロ実行後

ファイルを開くダイヤログを表示して、データを読み込みたいテキストファイルを選択します。


 

2次元配列に、テキストファイルのデータを格納しました。


 

テキストファイルの内容

1行に2語入力し、単語の間に「,(カンマ)」を入力します。


 
 

テキストファイルを読み込み、2次元配列に格納(パターン2)

以下のマクロを実行すると、指定したテキストファイルを読み込んで配列に追加します。

Sub 指定したtxtファイルを読込し、二次元配列へ追加()
 
Dim WordListAddress As String
Dim TxtFileList As String
Dim InputCnt As Long
Dim TxtNum  As Long
Dim InputWord() As Variant
Dim TxtFile As String
Dim Buf As Variant
Dim i As Long
Dim fso As Object

    '配列の要素数を設定
    ReDim Preserve InputWord(100, 10)
 
    Set fso = CreateObject("Scripting.FileSystemObject")
 
    'テキストファイルのパスを指定
    WordListAddress = "C:\Users\admin\Desktop\テスト\チェックリスト3.txt"
     
    'テキストファイルのファイル名を拡張子つきで指定
    TxtFileList = fso.GetFileName(WordListAddress)
    TxtNum = FreeFile
        
    Open WordListAddress For Input As TxtNum
    
        While Not EOF(1)
            Line Input #TxtNum, TxtFileList
             
            '単語をカンマ区切り「,」で抽出
            Buf = Split(TxtFileList, ",")
            
            'txtファイルをループ(縦)
            If InputCnt < 100 Then
             
                For i = 0 To UBound(Buf)
                
                    'txtファイルをループ(横)
                    If i < 11 Then
                        InputWord(InputCnt, i) = Buf(i)
                    End If
                    
                Next i
                 
                InputCnt = InputCnt + 1
            
            End If
            
        Wend
    Close TxtNum
     
End Sub

 

2次元配列に、テキストファイルのデータを格納しました。

[If InputCnt < 100 Then] のコードを入れることで、テキストファイルのデータを何行目まで読み込むか指定しています。
 

テキストファイルの内容

カンマ区切りで単語を入力します。
1行に11語を入力すると、配列に10要素まで格納することができます。


 
 

【エクセルマクロ】名前を付けて保存時に拡張子をCSVに設定する
...