ExcelVBAにおけるレコード操作について

ExcelVBAで利用するADOオブジェクトとSQLの併用について

ExcelVBAではデータベース操作の基本であるレコード操作がオブジェクトを利用することで編集することが出来ます
また、このオブジェクトを利用せずにSQL文を利用してレコード操作を行うことも出来ます

どちらも同じ結果を導くので、どっちゃでもええのですが操作内容によっては処理速度に大きな差が出るので、そこには注意してください

基本的にコードの実行回数が同じ回数を実行する場合は、SQLよりオブジェクトを利用した方が早いです

例えば、レコードの追加が明確に差があります
SQL文ではレコードの追加はINSERT文を使用します、これはフィールド名と入力内容を指定することでデータベースに新規レコードとして追加する構文です
それに対して、オブジェクトを利用する場合はAddnewメソッドを利用します
このメソッドはデータの入力は行いません、新規レコードを追加するだけです
このメソッドを実行した後に各フィールド名を指定して値を代入していきます

この2つの全く同じ結果を求められる処理では、後者のオブジェクト利用が圧倒的に早いです

そもそもの想定の違いかもしれませんが、SQLは基本的に細かいコードを連続して実行するものではなく、なるべく1回のコード実行で結果を出すものだからです
対してExcelVBAは、細かいコードを大量に実行します

なのでどちらが優位というものでもないのでしょうが、ExcelVBAにおいてのレコード操作という点ではExcelVBAのオブジェクト利用が優位です

そして、ここまでオブジェクトと記載してきましたが、実際にはADOオブジェクトというものを利用します
これと似たような操作のできるDAOオブジェクトもありますが古いオブジェクトとなりますのでADOオブジェクトを利用できるようになれば十分です

このADOオブジェクトは、FileSystemObjectと同じようなインスタンスを作成して利用することのできるオブジェクトになります

Accessデータベースのファイルを作成し、接続を行い、テーブルの作成を行ったら
次に行うのがこのオブジェクトの作成です
それからようやくレコード操作が可能になります
実際のコードにすれば、ほんの数行の話なのであまり気負うものでもありませんが、初めは戸惑いたっぷりになるとは思いますが、基本はセルなどのオブジェクト操作と変わりませんので、この記事を読んでいる方のレベルなら特段難しくはありません

と、ここまでExcelVBAのオブジェクト利用の優位性を言い過ぎましたが、上記でも言いましたが実行回数が同じであれば確かにオブジェクト利用が優位です
ですが、オブジェクト利用ではレコードを1つずつ操作することになります

データベース全体に対するレコード操作を行いたい場合に1000レコードのデータベースであれば1000回コードを実行することになります
ですが、SQLのUPDATE文を利用すればたった1回の構文でデータベース全体の編集を行うことが出来ます

こうなるとコードの可読性においてもこちらが優位です

つまり言いたいのは、ADOオブジェクトだけではレコード操作を有効利用できない、ということです
おすすめ書籍でもあげているSQLの基礎本などを参考にSQLもすこしずつ理解を深めていってください

フィルタやワークシート関数を多用して、かつピボットテーブルまで使ってようやく出来るような集計がSQLでは驚くほど簡単に出来ることが多いです
データベースをデータの保管庫としてだけでなく、集計処理でも有効にデータベースを利用してください