エクセルのクエリテーブルオブジェクトで複数のテキストファイルを読み込む

2つのテキストファイルを2つのエクセルのシートに読み込む方法です。

目次

設定するエクセルシート

3つのシートを用意します。

  • パス:読み込むパスを入力するシート
  • data1:テキストファイル「data1」を読み込むシート
  • data2:テキストファイル「data2」を読み込むシート
シート・パス
シート・data1
シート・data2

サンプルコード

読み込みは同じ処理のため、プロシージャーを分けています。

Sub sample1()
    Dim wsP As Worksheet: Set wsP = Worksheets("パス")
    Dim ws1 As Worksheet: Set ws1 = Worksheets("data1")
    Dim ws2 As Worksheet: Set ws2 = Worksheets("data2")
    Dim dPath As String
    Dim fName As String
    
    Dim i As Long
    For i = 1 To 2
        fName = wsP.Cells(i, 1)
        dPath = wsP.Cells(i, 2)
       Call imData(fName, dPath)
    Next i
End Sub
Private Sub imData(ByVal fName As String, ByVal dPath As String)
    Worksheets(fName).Range("A1").CurrentRegion.ClearContents
    Dim imData As QueryTable
    Set imData = Worksheets(fName).QueryTables.Add(Connection:="TEXT;" & dPath, _
                    Destination:=Worksheets(fName).Range("A1"))
    With imData
        .TextFilePlatform = 65001
        .TextFileParseType = xlFixedWidth
        .TextFileFixedColumnWidths = Array(8, 12, 12, 12)
        .Refresh
        .Delete
    End With
End Sub
  • 10行目:シート名を取得
  • 11行目:テキストデータの保存先とファイル名のパスを指定
  • 12行目:「Call imData」で15行目の「Sub imData」を呼び出します。このときにファイル名とファイルパスを引数で指定します。
  • 15行目~:クエリオブジェクトでテキストデータを読み込む
目次