【ExcelVBA入門】QueryTablesメソッドで高速にファイルを読み込む方法

皆さんは、VBAのQueryTablesメソッドを使って高速にファイルを読み込む方法を知っていますか?

QueryTablesメソッドを使えば簡単にファイルを読み込むことができるのでおすすめです!

そこで今回は、

  • QueryTablesメソッドの基礎的な使い方
  • QueryTablesメソッドを使ったサンプルコード
  • エラーが出たときの対処方法について
  • マクロの記録を使って速くコードを書く方法

といった基礎的なことから、応用的な方法まで、徹底的に解説します!

VBAでファイルを読み込む方法

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

  • Openメソッドを使って1行ずつデータを読み込む
  • QueryTablesメソッドを使ってファイルを読み込む


それぞれ、次のようなメリットがあります。

  • Openメソッド:シンプルな使い方でわかりやすい
  • QueryTablesメソッド:処理速度が圧倒的に速い


ファイル読み込みで検索すると、最初にOpenメソッドの使い方が出てくるケースが多いため、Openメソッドを使っている方も多いです。

ただ、処理が速いのはQueryTablesメソッドなので、CSV読み込みなど大規模データを取り込む場合は、QueryTablesメソッドを使うのがおすすめです!

今回は、QueryTablesメソッドの使い方に特化して解説するので、Openメソッドについて気になる方は以下を見てみてくださいね!

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

QueryTablesメソッドの使い方

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

QueryTablesメソッドは読み込むファイル指定したあと、プロパティ・メソッドで詳細な設定を追加して使います。

Dim queryTb As QueryTable
Set queryTb = Worksheets(1).QueryTables.Add(Connection,Destination)

With queryTb
	.プロパティ1
	.プロパティ2
	.プロパティ3
	.メソッド1
	.メソッド2
End With

AddメソッドはConnectionで読み込むファイル形式・ファイルパスを設定し、Destinationで値の貼り付け開始位置を指定します。

プロパティ・メソッドは数が多いので、よく使うものだけ抜粋して一覧化しました。

Noプロパティ・メソッド概要
1TextFilePlatform文字コードの指定
・932:Shift_JIS
・65001:UTF-8
2TextFileParseType区切り文字の方式
・xlDelimited:区切り文字によってファイルが区切る
・xlFixedWidth:ファイルのデータを固定幅の列として認識
3TextFileCommaDelimiterカンマ区切りに設定。True/Falseで指定。
4TextFileTabDelimiterタブ区切りに設定。True/Falseで指定。
5TextFileSemicolonDelimiterセミコロン区切りに設定。True/Falseで指定。
6TextFileSpaceDelimiterスペース区切りに設定。True/Falseで指定。
7TextFileOtherDelimiter区切り文字を指定できるに設定。True/Falseで指定。
8TextFileStartRow読み込み開始行の指定に設定。True/Falseで指定。
9RefreshStyleセルを上書きするか追加するかを設定する
・xlOverwriteCells : セルは追加せず上書きする
・xlInsertDeleteCells : レコードに合わせ行を追加削除する
・xlInsertEntireRows : セル又は行を削除せず、行を挿入する
10FieldNamesフィールド名を列名に設定。True/Falseで指定。
11Refresh実行するとデータを表示する
12Delete読み込むファイルとの接続を解除

サンプルコード

次に、サンプルコードをもとに、具体的な使い方を解説します!

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

No,Name
1,侍エンジニア1
2,侍エンジニア2
3,侍エンジニア3
4,侍エンジニア4

サンプルコード:

Sub Test()
  Dim wsImport As Worksheet
  Set wsImport = Worksheets("CSV読み込み") 'CSVデータを取り込み用シート

  '読み込むファイル
  Dim strFilePath As String
  strFilePath = "C:UsersSamuraiDesktopVBAQueryTablesサンプルtest.csv"

  Dim queryTb As QueryTable
  Set queryTb = wsImport.QueryTables.Add(Connection:="TEXT;" & strFilePath, _
                                         Destination:=wsImport.Range("A1")) ' CSV を開く
  With queryTb
      .TextFilePlatform = 932          ' 文字コードを指定
      .TextFileParseType = xlDelimited ' 区切り文字の形式
      .TextFileCommaDelimiter = True   ' カンマ区切り
      .RefreshStyle = xlOverwriteCells ' セルに書き込む方式
      .Refresh                         ' データを表示
      .Delete                          ' CSVファイルとの接続を解除
  End With
End Sub

実行結果:

このように、簡単にファイルを読み込むことができます。

補足:その他の処理高速化方法とは

QueryTablesメソッドはファイルを高速に読み込むことができる方法なのですが、処理を高速化する方法は他にもあります。

以下で詳しくまとめているので、気になる方は見てみてくださいね!

【ExcelVBA入門】処理の実行時間を高速化する方法を徹底解説!
更新日 : 2019年8月28日

まとめ

今回は、ファイルを高速に読み込むためのQueryTablesメソッドの使い方について解説しました。

ExcelではCSVファイルや、テキストファイルを読み込むケースはよくあります。大規模なデータを使うことも多いので、ぜひ使ってみてくださいね!

LINEで送る
Pocket

ITエンジニアへ転職したい方におすすめ

自分を評価してくれる企業に転職して年収を上げたい! 自分のスキルにあった独自案件を知りたい!
エンジニアは今もっとも注目されている職業の1つ。エンジニアになって年収を増やしたい方や、あなたのスキルに見合った企業へ転職したいエンジニアの方も多いですよね。

しかし、大手の転職媒体は扱う求人数が多くても、誰もが登録しているので競争率もかなり高くなっています。そのため、あなたの条件に見合った企業を見つけても転職するためには、相応の努力とスキルが必要となります。

こういった媒体では、未経験からエンジニアを目指す方やエンジニア歴2〜3年で転職を考えている方にとって、最適な転職環境とはいえません。

そこでオススメしたいのが、未経験者や若手エンジニア向けの独自案件を多く掲載している「侍ワークス」です。

侍ワークスは、独自案件を多く掲載しているだけでなく、

・応募から就業まで一貫したサポート

・就業後もアフターフォロー

といった経験の浅い方や初めてエンジニアを目指す方にも安心のフォロー体制が整っています。もちろん登録は完全無料!しかも案件を見るだけなら登録も不要です。

まずは、お気軽にどんな求人があるか見てみてください。あなたにピッタリの企業がきっと見つかりますよ! 侍ワークスの求人情報を見る

書いた人

Sanshiro Wakizaka

Sanshiro Wakizaka

新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。
Webアプリ、業務アプリ開発において、要件定義、設計、インフラ、製造、テスト、運用保守など、様々な経験あり。
また、侍ブログ編集部として、これまでに200記事以上の記事を執筆。
現在はフリーランスエンジニア兼テックライターとして活動中。