2017年8月3日

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


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

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

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

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

では、実際のコードは次のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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行目は項目名とみなされます。

実行結果




スポンサーリンク



Follow Me on Pinterest
Clip to Evernote