📘 Excel逆引き事典

【VBA】CSVファイルをバックグラウンドで取得する方法

日々の業務の中で、手作業でCSVファイルをダウンロードするのは時間がかかります。この記事では、VBAを使用してCSVファイルをバックグラウンドで取得し、労力を削減します。

サンプルコード

VBA
Option Explicit
Sub GetCSVInBackground()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    Application.ScreenUpdating = False '画面更新停止
    
    ' CSVファイルのURLを指定
    Dim csvUrl As String
    csvUrl = "https://example.com/data.csv"
    
    ' ファイルをダウンロードするためのHTTPリクエストを作成
    Dim httpReq As Object
    Set httpReq = CreateObject("MSXML2.XMLHTTP")
    httpReq.Open "GET", csvUrl, False
    httpReq.Send
    
    If httpReq.Status = 200 Then 'ステータスコードが200なら成功
        Dim csvData As String
        csvData = StrConv(httpReq.ResponseBody, vbUnicode)
        
        ' CSVデータをワークシートに書き込む
        ws.Cells(1, 1).Value = Split(csvData, vbCrLf)(0) 'ヘッダー行
        For i = 1 To UBound(Split(csvData, vbCrLf)) - 1
            ws.Cells(i + 1, 1).Value = Split(Split(csvData, vbCrLf)(i), ",")(0)
            ws.Cells(i + 1, 2).Value = Split(Split(csvData, vbCrLf)(i), ",")(1)
        Next i
    End If
    
    Application.ScreenUpdating = True '画面更新再開
End Sub

よくある質問

Q 元に戻せますか?

A.
VBAの実行結果は「元に戻す」が効きません。必ずバックアップを取ってから実行してください。

Q エラーが出たら?

A.
URLやヘッダー行、列番号が正しいか確認してください。