VBAサンプル集
ADOでテキストデータを集計する

ExcelマクロVBAの実用サンプル、エクセルVBA集と解説
公開日:2021-08-04 最終更新日:2021-08-04

ADOでテキストデータを集計する


テキストデータの文字を頻出順に求めるコードについて、ツイッターでかきこみがありました。
#助けてVBA のタグもついていたので、これに回答した時のコードをここに残します。
テキストファイルの読み込みで、ADOを使いSQLで集計しています。



#助けてVBA の元ツイート

解答したツイート

ADOとSQLの解説

ADOについて

ADO(ActiveX Data Objects)の使い方の要点
・データベースの種類 ・SQL(SQL:Structured Query Language) ・ADOを使う準備 ・ADOでのDB接続方法 ・ADODB.Recordsetの取得方法 ・ADODBのレコードセットの扱い方 ・ADODBのトランザクション処理 ・ADODB.Commandの使い方 ・VBA100本ノックでの実践例 ・最後に注意点等
ADOでCSV読み込み(SQL)
・CSVテストデータ ・ADOでCSV読込のVBA ・ADO使用時の注意点 ・ADOレコードセットをCSV出力 ・ADOでTSVの読み込み ・ADOでCSVの読み込みについて ・本サイトにあるCSV関連記事一覧


SQLについて

VBAでのSQLの基礎(SQL:Structured Query Language)
・SQL文 ・SELECT文 ・SQLの学習について ・実践例
SQL入門:VBAでデータベースを使う
・データベースの必要性と本シリーズの方針 ・DBとはSQLとは ・SQL入門の目次 ・SQL基礎問題の目次 ・SQLを使った既存サンプル


VBAコード

Sub sample()
  Dim objCn As New ADODB.Connection
  Dim objRS As New ADODB.Recordset
  Dim strSQL As String

  With objCn
    .Provider = "Microsoft.ACE.OLEDB.12.0"
    .Properties("Extended Properties") = "Text;HDR=No"
    .Open ThisWorkbook.Path & "\"
  End With
  
  strSQL = "SELECT F1,COUNT(F1) FROM [aaa.txt] GROUP BY F1 ORDER BY COUNT(F1) DESC"
  Set objRS = objCn.Execute(strSQL)
 
  With ActiveSheet
    .UsedRange.ClearContents
    .Range("A1").CopyFromRecordset objRS
  End With
  
  objCn.Close
  Set objRS = Nothing
  Set objCn = Nothing
End Sub

上記では、VBEで参照設定しています。
Microsoft ActiveX Data Objects 2.X Library
または
Microsoft ActiveX Data Objects 6.1 Library


解説

サンプルのテキストデータにはヘッダーがないので、
HDR=No
としています。

SQLは、
SELECT F1,COUNT(F1) FROM [aaa.txt] GROUP BY F1 ORDER BY COUNT(F1) DESC
ヘッダーがないのでフィールド名はF1,F2,F3,…となります。

1列目でグループ化して、COUNT(F1)で件数を求めています。
件数の多い順にするので、
ORDER BY COUNT(F1) DESC
としています。




同じテーマ「マクロVBAサンプル集」の記事

CSVの読み込み方法(改)
CSVの読み込み方法(改の改)
CSVの読み込み方法(ジャグ配列)
CSVの読み込み方法(ジャグ配列)(改)
CSVの出力(書き出し)方法
UTF-8でCSVの読み書き(ADODB.Stream)
ADOでマスタ付加と集計(SQL)
ADOでマスタ更新(SQL)
ADOでCSVの読み込み(SQL)
ADOでテキストデータを集計する
Excelファイルを開かずにシート名を取得


新着記事NEW ・・・新着記事一覧を見る

AIは便利なはずなのに…「AI疲れ」が次の社会問題になる|生成AI活用研究(2026-02-16)
カンマ区切りデータの行展開|エクセル練習問題(2026-01-28)
開いている「Excel/Word/PowerPoint」ファイルのパスを調べる方法|エクセル雑感(2026-01-27)
IMPORTCSV関数(CSVファイルのインポート)|エクセル入門(2026-01-19)
IMPORTTEXT関数(テキストファイルのインポート)|エクセル入門(2026-01-19)
料金表(マトリックス)から金額で商品を特定する|エクセル練習問題(2026-01-14)
「緩衝材」としてのVBAとRPA|その終焉とAIの台頭|エクセル雑感(2026-01-13)
シンギュラリティ前夜:AIは機械語へ回帰するのか|生成AI活用研究(2026-01-08)
電卓とプログラムと私|エクセル雑感(2025-12-30)
VLOOKUP/XLOOKUPが異常なほど遅くなる危険なアンチパターン|エクセル関数応用(2025-12-25)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.日本の祝日一覧|Excelリファレンス
3.変数宣言のDimとデータ型|VBA入門
4.FILTER関数(範囲をフィルター処理)|エクセル入門
5.RangeとCellsの使い方|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
8.マクロとは?VBAとは?VBAでできること|VBA入門
9.セルのクリア(Clear,ClearContents)|VBA入門
10.メッセージボックス(MsgBox関数)|VBA入門




このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


記述には細心の注意をしたつもりですが、間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。
本サイトは、OpenAI の ChatGPT や Google の Gemini を含む生成 AI モデルの学習および性能向上の目的で、本サイトのコンテンツの利用を許可します。
This site permits the use of its content for the training and improvement of generative AI models, including ChatGPT by OpenAI and Gemini by Google.



このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
本文下部へ