AccessをWebアプリへ移行する手順は?サンプルで6工程の時間を秒で計った
AccessをWebアプリへ移す手順は、棚卸し、テーブル移行、画面、帳票、VBAの処理、突き合わせの6工程です。主宰が作った架空のサンプルDB(テーブル5、VBA 58行)をコーディング用のAIで移すと、AIの実行時間は合計3分23秒(203秒)で、帳票55秒とVBAの処理36秒が全体の45%、テーブル移行42秒の約2倍でした。人が確かめる時間は記録しておらず、実物の期間の目安ではありません。突き合わせで見つかった差は、VBAの丸めによる3件の1円だけです。(2026年10月時点)
全体の流れと費用はAccess・オフコンの引越しのページにまとめています。
要点
- AccessをWebアプリへ移す手順は、棚卸し・テーブル移行・画面・帳票・VBAの処理・突き合わせの6工程です。
- 時間は、主宰が作った架空のサンプルDBをAIで移したときのAIの実行時間(合計203秒)で、人が確かめる時間は記録していません。
- 工程ごとでは、帳票55秒とVBAの処理36秒の計91秒が全体の45%を占め、テーブル移行42秒の約2倍でした。最初の画面は82秒後に出ました。
- データ(テーブル)の移行は42秒で、件数と明細の金額合計66,083,785円は移した直後に一致しました。
- 請求60件の突き合わせでは、VBAのRoundの丸め方が原因で3件の税額が1円ずれ、直したあと差は0件になりました。
目次
AccessをWebアプリへ移す手順と、時間がかかる工程は?
手順は、棚卸し、テーブル移行、画面、帳票、VBAの処理、突き合わせの6工程です。架空のサンプルDBで時間を計ると、帳票とVBAの処理の合計91秒は、データ(テーブル)を移す42秒の約2倍でした。
Access・オフコンの引越しでは、データより先に「何が出てくるか」と「何を計算しているか」を数えます。下の表のとおり、時間の45%と、見つかった差のすべてが帳票とVBAの側でした。
| 工程 | したこと | AIの実行時間(秒) | 始めてからの累計 | 書いたコード(行) | 人の確認時間 | 確かめたこと |
|---|---|---|---|---|---|---|
| 棚卸し | テーブル・クエリ・フォーム・レポート・VBAを数える | 31 | 0分31秒 | 19 | 記録なし | 部品の数と件数 |
| テーブル移行 | CSVに書き出し、SQLiteに入れる | 42 | 1分13秒 | 52 | 記録なし | 件数と金額の合計 |
| 画面 | 受注一覧と受注入力 | 25 | 1分38秒 | 53 | 記録なし | 一覧が出るか、空の明細を断るか |
| 帳票 | 請求書をWebで出す | 55 | 2分33秒 | 51 | 記録なし | AccessのPDFと明細・合計を比べる |
| VBAの処理 | 月の締め処理を書き直す | 36 | 3分09秒 | 35 | 記録なし | 期間の決め方と税の端数 |
| 突き合わせ | 請求60件を1項目ずつ比べる | 13 | 3分22秒 | 13 | 記録なし | 差が0件になるまで |
秒は工程ごとの壁時計の時間を丸めた値で、合計は203秒(3分23秒)です。累計の最後が3分22秒なのは、工程ごとに丸めたためです。人が結果を確かめた時間は、この記録では計っていません。実物の移行では、帳票と計算の意味を使う方に確かめる時間が、ここに加わります。
どんなサンプルを、どう移して計ったのですか?
移したのは、主宰が作った架空の受注管理です。中身はテーブル5、クエリ2、フォーム1、レポート1、VBA 58行です。これをコーディング用のAIで、PythonとSQLiteのWebアプリへ移しました。工程の始めと終わりの時刻をファイルに残し、その差を秒で数えています。
データは得意先20件、商品30件、受注600件、受注明細1,798件です。得意先ごとに「20日締め」か「末日締め」、税の端数は「切り捨て」か「四捨五入」を持たせ、VBAが毎月の請求を作ります。Accessで2026年7〜9月の締め処理を動かした請求60件を、移したあとの正解にしました。
秒の数字は、そのまま実物の目安にはなりません。限界は次の3つです。
- サンプルは移した側が作ったので、中身を最初から知っていました
- 人が帳票や計算の意味を確かめる時間は、入っていません
- 実物のレポートの数やVBAの行数は会社ごとに違うので、この秒数を掛け算しても見積もりにはなりません
最初の画面は、始めてから何分で出ましたか?
始めてから82秒で、受注一覧の画面が出ました。棚卸しとテーブル移行が終わった直後で、移したデータからAccessのクエリ「q_受注一覧」と同じ集計を出しています。
画面が早く出せるのは、テーブルの形がそのまま使えるからです。受注入力の画面も同じ工程で作り、試しに2回登録しました。商品と数量を入れた受注は登録され、明細が1行もない受注は「明細がありません」と断られます。試しの受注は、あとでデータを入れ直して消しました。
私が実物で進めるときも、最初に一覧の画面を見ていただき、項目の名前や並びを直してから帳票に進みます。試作は最短当日です。
帳票とVBAの処理に時間がかかるのは、なぜですか?
作るより、元と同じかを確かめる作業が要るからです。帳票の55秒のうち多くは、AccessのレポートをPDFに書き出し、Webの請求書と明細の行数や合計を比べる手順でした。
比べた請求書(INV202608-003)は、明細23行と小計574,190円が一致しました。税57,419円、合計631,609円も同じです。日付の書き方はAccessに合わせて「2026/08/03」の形に直しています。レポートの見た目をmm単位で合わせる方法は、Accessの帳票を同じ形で出せるかで測りました。
VBAの処理は、書いてある動きと業務の意味がずれていることがあります。サンプルの締め処理は、末日締めなら1日から末日、20日締めなら前月21日から当月20日を期間にします。この期間の決め方と税の端数を、Pythonで書き直しました。
突き合わせで見つかった差は、何でしたか?
請求60件のうち3件で、税額と合計が1円ずつ違いました。どれも小計の1の位が5で、税がちょうど「.5円」になる請求です。VBAのRound関数は0.5を偶数の側へ寄せますが、Webの初版は四捨五入で切り上げていました。
Microsoftの説明にも、VBAのRoundは「bankers rounding」を返すと注記があります。銀行型の丸めとも呼ばれる方式です。得意先の設定は「四捨五入」なのに、実際の請求は偶数への丸めで出ていたことになります。
Web側は元の動きに合わせ、差は0件になりました。直した関数(webapp/closing.py)の要点は次の数行です。
# 「四捨五入」の得意先。元の VBA の Round と同じく、ちょうど .5 は偶数に寄せる
def tax(subtotal, rounding):
if rounding == 1:
return subtotal // 10 # 切り捨て
q, r = divmod(subtotal, 10)
return q + 1 if r > 5 or (r == 5 and q % 2 == 1) else q
元に合わせるか、本来の四捨五入に直すかは、使う会社が決めることです。直す場合は、切り替えの月を決めて得意先に伝えます。
自社のAccessで、手間の大きさを見積もるには?
レポートの数とVBAの行数を数えると、手間の大きさの見当がつきます。この記録でも、時間と差の出た所は帳票とVBAに集まりました。テーブル移行も42秒かかりましたが、件数と金額の合計が合えば確かめは終わり、差も出ませんでした。
数えるときは、次の4つを見ます。
- レポートの数と、そのうち得意先に渡す帳票の数
- VBAの行数と、Round・Format・DateSerialなど計算や日付を扱う行
- ボタンに結び付いた処理(フォームのクリック時の設定)
- 締めの種類(20日・末日など)と得意先ごとの設定
数え方の手順は作った人がいないAccessの中身を数える手順にまとめています。切り替える前には、並行稼働の期間のあいだ新旧の帳票を突き合わせ、差が0件になってから移ります。
このサイトで相談するには?
Access引越しでは、どの帳票とVBAの処理を移すかを一緒に数えるところから始められます。何をどう頼むか決まっていなくても大丈夫です。御社のやり方に合わせて、進め方を一緒に考えます。
準備は要りません。無料で相談するからお送りください。
よくある質問
- 実際の会社のAccessも、数分で移せますか?
- いいえ。この記録は小さな架空のDBを、中身を知っている側が移した時間です。実物では、帳票やVBAの意味を使う方に確かめる時間が加わります。
- 最初の画面は、どれくらいで見られますか?
- 試作は最短当日です。サンプルでは始めてから82秒で受注一覧が出ました。実物では、データを預かる手順を決めてから作ります。
- VBAの「四捨五入」は、移行後も同じ結果になりますか?
- 書き方しだいでずれます。VBAのRoundは、ちょうど0.5を偶数の側へ寄せます。元の動きに合わせるか直すかは、使う会社が決めます。
- Accessのデータは、移したあとも残せますか?
- はい。この記録でも、元のファイルは読むだけで書き換えていません。並行稼働のあいだは、新旧の両方で帳票を出して比べます。
この数字の出し方
この記事の自前の数字は、次の見本・条件・回数で出しました。主宰が確かめ、更新日は2026年10月17日です。スクリプトの名前から、同じ手順を自分のファイルで再現できます。
- Access引越しの作業記録(2026年10月16日、Microsoft 365 Access 64bit・Python 3.14・SQLite、架空のサンプルDB 1本)。scripts/figs/work_log/ と scripts/figs/fig_work_log.py