Access引越し中小企業のAI導入支援|古い業務システムの作り直しからAccess・オフコンの引越し 専門

コラム仕組みと実験

AIにAccessのVBAを読ませて、仕様書は作れますか?手で作った正解と比べた実験

AIにAccessのVBAを読ませると、仕様書の下書きになるボタンごとの処理の一覧は1分ほどで作れます。架空の受注管理(VBA 220行、ボタン12個)で試すと、VBAだけを渡したAIは、ボタンと触るテーブルの組39のうち35〜36組を書きました。漏れた組は、どれもクエリやフォームの中にだけ名前があるテーブルでした。クエリのSQLも渡すと、3回とも39組すべてがそろいました。Access引越しで行った実験の結果です。(2026年10月時点)

全体の流れと費用はAccess・オフコンの引越しのページにまとめています。

要点

  • AIはVBAだけから、ボタン12個すべての処理の要約を1回50〜57秒で書きました。
  • 触るテーブルは39組のうち35〜36組を書き、漏れた3〜4組はクエリやフォームの先にありました。
  • クエリのSQLとレコードソースも渡すと、3回とも39組と計算式10本がすべてそろいました。
  • 正解にないテーブルを書いた回は6回中0回で、コメントにだけ残る古いテーブル名も拾いませんでした。
  • 架空のサンプル220行での結果なので、実物では人が逆向きに突き合わせてから仕様書にします。
目次
  1. AIにAccessのVBAを読ませると、仕様書はどこまで作れますか?
  2. 実験では、何をどう比べたのですか?
  3. AIが書き漏らしたテーブルは、どこにあったのですか?
  4. 計算式と処理の要約は、どこまで正しかったですか?
  5. AIに渡す前に、何を書き出しておけばよいですか?
  6. このサイトで相談するには?
  7. よくある質問

AIにAccessのVBAを読ませると、仕様書はどこまで作れますか?

ボタンごとの処理の一覧は、ほぼそのまま使える形で作れます。ただし、VBAだけを渡すと、ボタンが触るテーブルを1割ほど書き漏らしました。漏れはクエリやフォームの中に隠れていて、それらも一緒に渡すと漏れは0になりました。

ここで言う仕様書は、ボタンを押すと何が起き、どのテーブルを読み書きし、何を計算するかの一覧です。Access・オフコンの引越しでは、移す範囲を決める最初の資料になります。Access引越しの実験では、同じ材料をAIに3回ずつ読ませ、手で作った正解と比べました。結果は次の表のとおりで、設計の情報を足した条件Bだけが全項目で満点でした。

比べた項目 正解の数 条件A VBAだけ(3回) 条件B 設計情報つき(3回)
ボタン 12 12・12・12 12・12・12
触るテーブルの組 39 35・36・36 39・39・39
うちVBAに名前がない組 10 6・7・7 10・10・10
正解にないテーブル 0 0・0・0 0・0・0
計算式 10 8・9・8 10・10・10
AIが書けた触るテーブルの組を6回分並べた横棒グラフ。VBAだけでは39組中35〜36組で、うち6〜7組は名前からの推定。設計情報つきは3回とも39組
図1 触るテーブルの組39を、AIが何組書けたか。VBAだけでは35〜36組で、うち6〜7組はクエリやフォームの名前から推定して当てたものでした。設計情報つきは3回とも39組です。

実験では、何をどう比べたのですか?

Access引越しで架空の受注管理のAccessを作り、VBAの6モジュール(220行)をAIに読ませました。出させたのは、ボタンごとの処理の要約、触るテーブル、計算式の3つです。手で作った正解と、機械的に照らし合わせて数えました。

サンプルには、引越しの現場でよく見る書き方を入れています。テーブル名を定数に入れる、文字列をつないでSQLを組み立てる、別のモジュールの関数から書き込む、といった書き方です。コメントには、今は使っていない古いテーブル名も残しました。AIはClaude Sonnet 5.5を道具なしで使い、各条件3回、2026年10月16日に実行しています。

実験の流れの図。架空のAccessのVBAを、VBAだけの条件Aと、クエリのSQLとレコードソースを足した条件Bで各3回AIに読ませ、正解のボタン12個・組39・計算式10本と比べる
図2 実験の流れ。同じプロンプトで、渡す材料だけを変えました。正解は、サンプルを作った側が手で書いたものです。

数え方の要点は次の数行です(score.py)。正解の組がAIの出力にあれば当たり、なければ漏れ、正解にない組は余分として数えます。

for tb in truth_tables:
    if tb in ai_tables: tp += 1
    else: misses.append(f"{button}:{tb}")
fp += len(ai_tables - set(truth_tables))

材料・プロンプト・AIの出力6回分・採点の結果は、すべて手元に残しています。限界もあります。サンプルは短く、テーブル名も分かりやすく付けました。実物のAccessは数千行あることが多く、名前が「Q1」「テーブル2」のような場合は、推定も当たりにくくなるはずです。

AIが書き漏らしたテーブルは、どこにあったのですか?

漏れた3〜4組は、すべてVBAのファイルの外にありました。保存クエリのSQL、フォームのレコードソース、レポートのレコードソースの3か所です。レコードソースは、フォームやレポートが表示するテーブルかクエリの指定です。VBAには「このクエリを開く」としか書かれていないので、AIからはその先が見えません。

通り道 サンプルでの例 条件Aで漏れた回
保存クエリのSQL Q_在庫不足 → T_商品 3回とも
フォームのレコードソース F_受注一覧 → T_得意先 3回とも
レポートのレコードソース R_請求書 → T_得意先 3回とも
サブフォームのレコードソース sub明細 → T_受注明細 1回
ボタンのVBAから、保存クエリのSQL、フォームのレコードソース、レポートのレコードソースを通ってテーブルに届く3つの通り道を示した図。途中の3か所はVBAのファイルに書かれていない
図3 VBAだけでは見えない3つの通り道。条件Aの漏れは、どれもこの先のテーブルでした。

VBAに名前が出てこない組は10あり、AIはそのうち6〜7組をクエリやフォームの名前から当てました。多くの回で「定義が渡されていないので推定」と書き添えています。推定が当たったのは、名前が分かりやすいサンプルだったからです。仕様書では、推定の印が付いた行を人が確かめる行として扱います。

計算式と処理の要約は、どこまで正しかったですか?

VBAに書かれた計算式8本は、6回とも読み違えませんでした。条件Aで書けなかったのは、クエリのSQLの中にある2本(有効在庫と在庫の引当)です。引当は推定で書いた回がありましたが、有効在庫は3回とも書けませんでした。SQLを渡した条件Bでは、2本とも3回書けています。

消費税は「Int(小計×税率)」から1円未満の切り捨てと書きました。支払期日の「DateSerial(年, 月+2, 0)」も、締め日の翌月末と正しく読んでいます。月に2を足しているので、翌々月と読み違えやすい書き方です。コメントにだけ残した古いテーブル(T_売掛)は、6回とも今の処理に含めませんでした。

一方で、AIの要約は回ごとに少しずつ言い回しが変わります。仕様書として残すときは、ボタン名・テーブル・式の欄に分けた表へ直します。AIの文をそのまま貼るより、あとで比べやすくなるからです。

AIに渡す前に、何を書き出しておけばよいですか?

VBAに加えて、クエリのSQLと、フォーム・レポートのレコードソースを書き出しておきます。今回の実験では、この3つを足しただけで、触るテーブルの漏れが3〜4組から0組になりました。

Accessの「データベース ドキュメンター」を使うと、フォームのプロパティやコードをレポートにできます。場所は[データベース ツール]タブの[解析]です(Microsoftサポートの説明)。

クエリのSQLが載るかは、説明に書かれていません。各クエリのSQLビュー(中身をSQLの文で見る画面)から写しておくと確実です。私が引越しの棚卸しをするときは、次の順で進めます。

  1. フォーム・レポート・クエリの数を数え、一覧にする(Accessの棚卸しの手順)
  2. VBAのモジュールと、クエリのSQL・レコードソースを書き出す
  3. AIに、ボタンごとの要約・触るテーブル・計算式を表で出させる
  4. 人が、テーブルごとに「どのボタンが書き換えるか」を逆向きに数えて突き合わせる
  5. ファイルの写しでボタンを押し、テーブルの件数が変わるかを見る

4番目の逆向きの突き合わせで、推定の行と漏れが見つかります。AIの表は下書きとして速く作り、確かめは人が行う、という分け方です。

このサイトで相談するには?

Access引越しでは、仕様書のないAccessも、VBAとクエリを書き出して中身を一緒に確かめます。何をどう頼むか決まっていなくても大丈夫です。御社のやり方に合わせて、進め方を一緒に考えます。

準備は要りません。無料で相談するからお送りください。

よくある質問

VBAをAIに渡すと、顧客のデータも渡ることになりますか?
いいえ。VBAとクエリのSQLは処理の書き方で、取引のデータは入っていません。ただ、SQLやコメントに得意先名が書かれていることがあるので、渡す前に検索して確かめます。
数千行のVBAでも、同じくらい書けますか?
分かりません。今回は220行の架空のサンプルです。長いときはフォームごとに分けて渡し、1つずつ突き合わせるほうが確かめやすくなります。
AIが「推定」と書いたテーブルは、そのまま使えますか?
使わずに、要確認の印として扱います。今回の推定は当たっていましたが、クエリのSQLで確かめるまでは仕様書に確定として書きません。
Accessのデータベース ドキュメンターだけで仕様書になりますか?
なりません。プロパティとコードは書き出せますが、ボタンを押すとどのテーブルが変わるかは、読んでまとめる必要があります。

この数字の出し方

この記事の自前の数字は、次の見本・条件・回数で出しました。主宰が確かめ、更新日は2026年10月17日です。スクリプトの名前から、同じ手順を自分のファイルで再現できます。

  • Access引越しの実験(2026年10月16日、架空の受注管理 VBA 220行・ボタン12個・ボタンと触るテーブルの組39。VBAだけを渡す条件とクエリのSQLも渡す条件を、各3回)。scripts/figs/ai_vba_spec/

出典

  1. Microsoft サポート「Document and print your database design」(データベース ドキュメンター。対象 Microsoft 365・2024・2021・2019・2016)(2026年10月16日確認)