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

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

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


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



#助けてVBA の元ツイート

解答したツイート

ADOとSQLの解説

ADOについて

ADO(ActiveX Data Objects)の使い方の要点
ADOはMicrosoftが提供するデータベースアクセスのためのソフトウェア部品です。OLEDBをActiveXコントロールの形で使えるようにしたプログラミングインターフェースになります。ここでは、ADOを使用したデータベースへの接続方法を解説します。
ADOでCSV読み込み(SQL)
VBAでADOを使用し、CSVデータを読み込みます。ADOではSQL文が必要になりますが、ここではSQL文の詳細については説明を省略します。ADO以外の方法については、「CSVの読み込み方法」を参考にして下さい。


SQLについて

VBAでのSQLの基礎(SQL:Structured Query Language)
SQL(StructuredQueryLanguage:構造化問い合わせ言語)は、データベースの定義や表の操作を行う言語です。(正確にはこの略称ではないが、説明の便宜上記載しています。) データ定義言語であるDDL(datadescriptionlanguage)と データ操作言語であるDML(datamanipu…
SQL入門:VBAでデータベースを使う
社会的にパソコンで扱うデータ量は近年急激に増えています。これに呼応してエクセルも2003までは65536行まででしたが、2007から飛躍的に増えて1048576行となっています。しかしエクセルで100万行扱えるといっても、データ量としては列数もありますので、実際には100万行はおろか数十万行でもエクセルが重くなって…


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 ・・・新着記事一覧を見る

ピッボットテーブルって便利だよね|還暦のVBA(2021-10-18)
還暦のVBA:VBAまでたどりつけるか… (2021-09-29)
VLOOKUPを使うことを基本としてシートを設計すべきか|エクセル雑感(2021-08-17)
コンピューターはブラックボックスで良い|エクセル雑感(2021-08-14)
小文字"abc"を大文字"ABC"に変換する方法|エクセル雑感(2021-08-13)
ADOでテキストデータを集計する|VBAサンプル集(2021-08-04)
VBA学習のお勧めコース|エクセル雑感(2021-08-01)
エクセル馬名ダービー|エクセル雑感(2021-07-21)
在庫を減らせ!毎日棚卸ししろ!|エクセル雑感(2021-07-05)
日付型と通貨型のValueとValue2について|エクセル雑感(2021-06-26)


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

1.最終行の取得(End,Rows.Count)|VBA入門
2.Excelショートカットキー一覧|Excelリファレンス
3.RangeとCellsの使い方|VBA入門
4.変数宣言のDimとデータ型|VBA入門
5.繰り返し処理(For Next)|VBA入門
6.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.並べ替え(Sort)|VBA入門
9.マクロって何?VBAって何?|VBA入門
10.セルに文字を入れるとは(Range,Value)|VBA入門




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


記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。



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