エクセルVBAのQueryTableオブジェクトのプロパティの基本とCSVをカンマ区切りする方法


CSV取り込みアイキャッチ
みなさん、こんにちは!
フジタニ(@libartweb)です。

エクセルVBAでCSVを高速に取り込むQueryTableオブジェクトの使い方についてシリーズでお伝えしております。

今回はいよいよQueryTableオブジェクトのプロパティを紹介します。

前回の記事はこちら

エクセルVBAのQueryTable.RefreshメソッドでCSVをシートに出力する方法
エクセルVBAのQueryTable.Refreshメソッドを使用して、クエリテーブルに取り込んだCSVをWorksheetに出力する方法を紹介します。高速にCSVを取り込む方法をシリーズでお伝えしています。

QueryTables.Addメソッドで作成したクエリテーブルをQueryTable.RefreshメソッドでWorksheetに出力するところまで紹介しました。

しかし以前までの記事だとプロパティ指定をしていなかったので、Worksheetに出力されたCSVはデータとして使える形式ではありませんでした。

今回はQueryTableオブジェクトのプロパティの基本をお伝えし、CSVをカンマで区切る方法を解説します。

様々なプロパティを操ることができれば、CSVを様々な形式で取り込むことが可能です!

スポンサーリンク

CSV取り込みで使うQueryTableプロパティ一覧

今回のサンプルコードはこちら

Private Sub csvImport()

    Dim strPath As String
    Dim qtCsv   As QueryTable
    
    strPath = "C:\Users\hirom\Desktop\test.csv"
    Set qtCsv = Sheet1.QueryTables.Add(Connection:="TEXT;" & strPath, _
        Destination:=Sheet1.Range("A1")) '取り込むCSVファイルパスと、取り込み先のシート、セルを指定
    
    With qtCsv
        .TextFileCommaDelimiter = True 'カンマ区切りの指定
        .TextFileParseType = xlDelimited   ' 区切り文字の形式
        .TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1) '項目(列)の型指定
        .TextFileStartRow = 1 '開始行の指定
        .TextFileTextQualifier = xlTextQualifierDoubleQuote '引用符の指定
        .TextFilePlatform = 932 '文字コードの指定
        .Refresh 'QueryTableオブジェクトを更新し、シート上に出力
        .Delete 'QueryTableオブジェクトを削除
    End With
End Sub

QueryTableオブジェクトにはたくさんのプロパティが存在します。CSV取り込みで主に使うプロパティは下記の通りです。

プロパティ名 内容 設定値の型
TextFileCommaDelimiter カンマ区切り Boolean(真偽値)
TextFileColumnDataTypes 項目の型 Variant(配列)
TextFileParseType 区切り文字の形式 XlTextParsingTypeクラスの定数
TextFileStartRow 取り込み開始行 long(数値)
TextFileTextQualifier 引用符 XlTextQualifierクラスの定数
TextFilePlatform 文字コード XlPlatformクラスの定数

では説明していきます!

QueryTableオブジェクトの各プロパティをエクセルの画面上で理解する

プロパティの取っつきにくさで理解が難しい!という方は、実際にエクセルの画面上から操作して、理解を深めましょう。

今回紹介するプロパティはエクセルの画面上からすべて設定可能です。

「テキストファイルウィザード」を開いてみましょう。

テキストファイル取り込み

データタブ→テキストファイル

から開くことが可能です。

QueryTableプロパティ1

QueryTableプロパティ2

QueryTableプロパティ3

まとめると以下の通りです。

プロパティ名 エクセルの画面上の表記
TextFileCommaDelimiter 区切り文字
TextFileColumnDataTypes 列のデータ形式
TextFileParseType 元のデータ形式
TextFileStartRow 取り込み開始行
TextFileTextQualifier 文字列の引用符
TextFilePlatform 元のファイル

QueryTableプロパティの指定方法

CSVをカンマ区切りで取り込む

CSVをカンマ区切りで取り込むには、以下のTextFileCommaDelimiterプロパティを使います。(前回の記事では、CSVをカンマ区切りで取り込めていませんでした。)

QueryTableオブジェクト.TextFileCommaDelimiter

既定値:Flase
カンマ区切りを指定します。TrueにすることでCSVをカンマ区切りで取り込むことができます。

TextFileCommaDelimiter = True

CSVをカンマ区切りで取り込む場合、最低限必要なのがこのTextFileCommaDelimiterプロパティの指定です。

実行結果

TextFileCommaDelimiterプロパティを指定しなかった場合(Falseの場合)

CSV取り込み結果

TextFileCommaDelimiterプロパティをTrueで指定した場合
TextFileCommaDelimiterプロパティの実行結果

カンマ区切りで取り込まれました!

TextFileCommaDelimiterプロパティは、必ず省略せずに指定しましょう。

ちなみに、ループを使用したCSV取り込みの方法だと以下のようにカンマ区切りを行います。

エクセルVBAでCSVデータをカンマで区切ってワークシートに取り込む方法
エクセルVBAでCSVを取り込む方法です。今回は、Splitという命令と配列を使ってCSVのレコードをカンマで区切ってワークシートに転記をしていく方法について解説をしていきます。

まとめ

以上、QueryTableオブジェクトでCSVをカンマ区切りで取り込むのに最低限覚えておくべきTextFileCommaDelimiterプロパティについて紹介しました。

実際のエクセルの画面上でもどの設定項目がどのプロパティを表しているのか?をイメージしていただけたと思います。

冒頭の表で紹介した、今回紹介していないプロパティは次回、紹介します。

文字列型で取り込んだり、文字コードを指定したり…

次回の記事で説明するプロパティを応用することで、さらに自在にCSVを操れるようになります!

どうぞお楽しみに!

連載目次:エクセルVBAのQueryTableで高速にCSVを取り込む

一般的なループを使用したCSV取り込みよりも、更に高速にCSVを取り込むことのできるQueryTableオブジェクトに関する連載です。サイズの大きなCSVを取り込む際に非常に便利です。
  1. エクセルVBAでQueryTableオブジェクトを使って高速にCSVを取り込む方法
  2. エクセルVBAのQueryTables.Addメソッドでクエリテーブルを作成する方法
  3. エクセルVBAのQueryTable.RefreshメソッドでCSVをシートに出力する方法
  4. エクセルVBAのQueryTableオブジェクトのプロパティの基本とCSVをカンマ区切りする方法
  5. エクセルVBAのQueryTableオブジェクトであらゆる種類のCSVを取り込む方法
  6. エクセルVBAで高速にCSVを取り込むQueryTableオブジェクトの最終処理
  7. エクセルVBAでCSVを高速に取り込むQueryTableオブジェクト使用時の注意点

タイトルとURLをコピーしました