【EXCEL VBA】UTF-8のCSVファイルを高速に読み込みたい

UTF-8のCSVファイルを高速に読み込んでシートに出力する方法を紹介します。QueryTableを利用することで、テキストファイルとして読み込むより高速に出力が可能です。

QueryTable で解決する

QueryTableは、SQL serverやMicrosoft Accessなど、外部データソースから取得するデータを操作する際に使用するオブジェクトです。今回は「外部データソース=CSVファイル」としてQueryTableオブジェクトを利用します。

サンプルプログラムを確認する(コピペOK)

Sub sample()
    Dim ws As Worksheet: Set ws = ActiveSheet
    
    Dim qtbl As QueryTable
    Set qtbl = ws.QueryTables.Add(Connection:="TEXT;C:\test.csv", Destination:=ws.Range("A1")) ' CSV を開く
    With qtbl
        .TextFilePlatform = 65001        ' 文字コード(UTF-8)を指定
        .TextFileCommaDelimiter = True   ' 区切りはカンマ
        .RefreshStyle = xlOverwriteCells ' 上書き
        .Refresh                         ' 表示する
        .Delete                          ' CSVとの接続を解除
    End With
End Sub