Excel VBAでQueryTableを使ってCSVデータを任意の位置に読み込む方法 ~文字コードや列の書式を指定して柔軟にインポート~

ExcelでCSVファイルを読み込む際、ファイルを開いてコピー&ペーストするだけではなく、VBAのQueryTable機能を使うことで、自動化や柔軟な読み込み制御が可能になります。

本記事では、Excel VBAを使って、UTF-8形式のCSVファイルを指定したセル位置に読み込み、列ごとのデータ型も細かく制御する方法をご紹介いたします。


目次

処理の概要

  • 対象CSVファイル:import_data.csv(UTF-8エンコード)
  • 読み込み位置:シート上の任意セル(ここでは D3 セルを指定)
  • 区切り文字:カンマ
  • 列の書式指定:文字列、日付、数値などを列ごとに定義
  • 読み込み後にQueryTableを削除し、見た目をシンプルに保持

VBAコード:QueryTableを用いたCSVの読み込み処理

Sub ImportCSVWithQueryTable()
    With ActiveSheet.QueryTables.Add( _
        Connection:="TEXT;" & ThisWorkbook.Path & "\import_data.csv", _
        Destination:=Range("D3") _
    )
        .AdjustColumnWidth = True
        .TextFilePlatform = 65001 ' UTF-8
        .TextFileParseType = xlDelimited
        .TextFileCommaDelimiter = True
        .TextFileColumnDataTypes = Array(1, 5, 2, 1, 2) ' 各列の書式設定
        .Refresh BackgroundQuery:=False
        .Delete ' クエリの痕跡を残さない
    End With
End Sub

各パラメータの詳細

パラメータ名内容・役割
Connection読み込み対象のCSVファイルのパス
Destinationデータの書き込み開始セル(例:Range("D3")
TextFilePlatform:=65001UTF-8文字コードを指定(文字化け防止)
TextFileCommaDelimiterカンマ区切りで読み込み
TextFileColumnDataTypes各列の書式を定義(下表参照)
Refreshデータの読み込み実行
Delete読み込み後にQueryTable自体を削除(見た目を維持)

TextFileColumnDataTypes の書式指定コード

数値書式の種類
1一般(自動判定)
2テキスト形式
5日付(YMD)
9読み飛ばし

実行結果のイメージ

D列E列(YMD)F列(テキスト)G列H列
田中2025/07/30TOKYO1234備考

応用ポイント

  • 区切り文字をタブにしたい場合は .TextFileTabDelimiter = True に変更可能です。
  • 読み込み先を Range("A1") にすれば、既存シートの表形式に合わせた配置が可能です。
  • QueryTableを削除しない設定にすれば、再読み込みボタンによる更新にも対応できます。

注意点

  • 読み込み先の範囲に既存のデータがある場合は上書きされるため、十分に注意してください。
  • TextFileColumnDataTypes の配列数が列数より少ない場合、余分な列は自動判定になります。
  • .Delete を省略すると、読み込み後もクエリの接続情報が残り、更新可能な状態になります。

まとめ

Excel VBAの QueryTables を使えば、CSVファイルの読み込みを自在に制御し、手間のかかる整形作業を自動化できます。
列の形式や文字コード、配置場所まで細かく設定できるため、定型データの読み込みに最適です。

毎回同じCSVファイルを開いて処理している方は、この方法を導入することで作業効率が大きく向上することでしょう。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次