【ExcelVBA】CSVファイルを読み込む方法とは?高速化方法も徹底解説!

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAでCSVファイルを読み込む方法について知っていますか?外部データをCSVファイルから読み込んで使うケースは、よくありますよね。

そこで今回は、

  • CSVファイルを読み込む方法とは
  • Openメソッドを使ったCSVファイル読み込み方法
  • QueryTablesメソッドを使ったCSVファイル読み込み方法
  • CSVファイルを高速に読み込む方法
  • といった基礎的なことから、応用的な方法まで、徹底的に解説します!

    CSVファイルを読み込む2つの方法とは

    はじめに、CSVファイルを読み込む方法について解説します。

    CSVファイルを読み込む方法は、大きくわけて2つの方法があります。

    • Openメソッド
    • QueryTableメソッド


    それぞれ詳しく解説しますね。

    Openメソッドを使う方法

    まずは、Openメソッドを使う方法について解説します。

    Openメソッドの使い方は次のとおりです。

    読み込むCSVファイルデータ:

    Openメソッドを使ったサンプルコード:

    実行結果:

    Openメソッドでファイルパスを指定してCSVファイルを開き、「Do While Not EOF(n) ~ Loop」でデータの行数分読み込み処理をしています。

    処理の中では、「Input #n, str1, str2」のように実際に取得するデータの列数分「Input #n」以降でカンマ区切りで変数を指定することで値を取得し、「Cells(i, 1).Value = str1」のように取得した値をセルに書き込むサンプルです。

    このように、取得したデータを1行ずつ読み込んで処理するのがOpenメソッドの特徴です。

    Openメソッドの詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

    【VBA入門】OpenメソッドでテキストファイルやCSVの読み込み
    更新日 : 2019年5月26日

    QueryTablesメソッドを使う方法

    次に、QueryTablesメソッドを使う方法について解説します。

    QueryTablesメソッドの使い方は次のとおりです。

    読み込むCSVファイルデータ:

    QueryTablesメソッドを使ったサンプルコード:

    実行結果:

    「wsImport.QueryTables.Add(Connection:=”TEXT;” & strFilePath, Destination:=wsImport.Range(“A1”))」の処理のConnectionでCSVファイルを指定し、DestinationでCSVファイルを読み込んだデータを書き込む位置を指定しています。

    その後、「With queryTb ~ End With」の処理で読み込み形式を指定してデータをインポートしています。

    このように、簡単に指定したファイルのデータをインポートすることができます。

    また、今回はCSVファイルだったので「TextFileCommaDelimiter = True」でカンマ区切りを指定していましたが、「TextFileTabDelimiter = True」を指定すればタブ区切りのファイルもインポートすることができます。

    QueryTablesメソッドの詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

    【ExcelVBA入門】QueryTablesメソッドで高速にファイルを読み込む方法
    更新日 : 2019年5月23日

    Openメソッド・QueryTablesメソッドどちらがいいの?

    ここまで読んだ方は、次のような疑問を持っているのではないでしょうか。

    OpenメソッドとQueryTablesメソッドどっちを使えばいいんだろう・・・

    正直言うと、どちらもCSVファイルを読み込むことができるので、データの量が少ない時はどちらでも構いません。

    ただ、Openメソッドは1行ずつデータを読み込むため大量のデータを読み込むときは速度が遅くなってしまいます。そのため、QueryTablesメソッドを使うのがおすすめです! ちなみに、処理速度はTimer関数を使えば簡単に確認することができます。

    速度確認方法:

    開始時にstartTime、終了時にendTimeに時刻を入れて、「endTime – startTime」をすることで処理時間を確認するサンプルです。

    このように、簡単に処理時間を計測することができます。

    Timer関数の詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

    【ExcelVBA入門】処理時間を計測するためのTimer関数の使い方とは
    更新日 : 2019年5月3日

    まとめ

    今回は、CSVファイルを読み込む方法について解説しました。

    外部データを取り込んでExcelで使うケースはよくあります。使い方も簡単なので、ぜひ使ってみてくださいね!

    LINEで送る
    Pocket

    最短でエンジニアを目指すなら侍エンジニア塾

    cta_under_bnr

    侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

    あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

    無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

    無料体験レッスンの詳細はこちら

    書いた人

    Sanshiro Wakizaka

    Sanshiro Wakizaka

    フリーランスエンジニア兼ライターのワキザカ サンシロウです。
    ExcelVBAの自動化ツール開発、WEB開発をメインにエンジニア業務をこなしつつ、サムライエンジニアにてライター業務をしております。

    プログラミングをこれからやってみたい方に向けて、ためになる記事を全力で書いていきますので宜しくお願い致します!

    おすすめコンテンツ

    あなたにぴったりなプログラミング学習プランを無料で診断!

    プログラミング学習の効率を劇的に上げる学習メソッドを解説