2017年8月3日

【Excel】CSVファイルからデータを取得してシートに表示するマクロ


CSVファイルからデータを取得してシートに表示するマクロです。

まず、CSVファイルにこのようなデータが格納されていたとします。
ID,EmployeeNumber,FirstName,LastName
1,10001,久江,丸山
2,10002,正義,梅田
3,10003,智子,篠原
4,10004,貞行,角田
5,10005,俊郎,松井
6,10006,健三,米田
7,10007,リサ,小田
ファイル名:T_Users.csv

このデータを次のシートに格納してみます。

1行目には列名をあらかじめ入力しています。

では、実際のコードは次のようになります。
Sub GetCsvData()

    Dim cnn As New ADODB.Connection
    Dim cmd As ADODB.Command
    Dim rst As ADODB.Recordset
    Dim i As Integer
    
    cnn.Open "Driver={Microsoft Text Driver (*.txt; *.csv)};DBQ=C:\work\Excel;ReadOnly=0"
    
    Set cmd = New ADODB.Command
    
    With cmd
        .ActiveConnection = cnn
        .CommandText = "SELECT ID, EmployeeNumber, FirstName, LastName FROM T_Users.csv"
        .CommandType = adCmdText
    End With
    
    'SQLを実行
    Set rst = cmd.Execute
    
    i = 2
    
    While rst.EOF = False
        'セルにデータを格納
        Cells(i, 1).Value = rst!ID
        Cells(i, 2).Value = rst!EmployeeNumber
        Cells(i, 3).Value = rst!FirstName
        Cells(i, 4).Value = rst!LastName
    
        'レコードを移動
        rst.MoveNext
        i = i + 1
    Wend
        
    rst.Close
    Set rst = Nothing
    Set cmd = Nothing
    cnn.Close
    Set cnn = Nothing
    
End Sub
SELECT文のFROMでCSVファイル名を指定します。また、CSVファイルの1行目は項目名とみなされます。

実行結果




スポンサーリンク