【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やヘッダー行、列番号が正しいか確認してください。