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

コラム調査・記録を読む

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件になりました。
目次
  1. AccessをWebアプリへ移す手順と、時間がかかる工程は?
  2. どんなサンプルを、どう移して計ったのですか?
  3. 最初の画面は、始めてから何分で出ましたか?
  4. 帳票とVBAの処理に時間がかかるのは、なぜですか?
  5. 突き合わせで見つかった差は、何でしたか?
  6. 自社のAccessで、手間の大きさを見積もるには?
  7. このサイトで相談するには?
  8. よくある質問

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件を、移したあとの正解にしました。

サンプルのAccessをWebアプリへ移した6工程の時間の横棒グラフ。帳票55秒、テーブル移行42秒、VBAの処理36秒、棚卸し31秒、画面25秒、突き合わせ13秒
図1:工程ごとの時間と、書いたコードの行数。合計203秒(3分23秒)。帳票とVBAの処理(水色)で91秒、全体の45%です。データは架空です。

秒の数字は、そのまま実物の目安にはなりません。限界は次の3つです。

  • サンプルは移した側が作ったので、中身を最初から知っていました
  • 人が帳票や計算の意味を確かめる時間は、入っていません
  • 実物のレポートの数やVBAの行数は会社ごとに違うので、この秒数を掛け算しても見積もりにはなりません

最初の画面は、始めてから何分で出ましたか?

始めてから82秒で、受注一覧の画面が出ました。棚卸しとテーブル移行が終わった直後で、移したデータからAccessのクエリ「q_受注一覧」と同じ集計を出しています。

移したデータで最初に作ったWebアプリの受注一覧の画面。受注ID・受注日・得意先・金額の4列で、架空の受注が日付の新しい順に並ぶ
図2:最初にできた画面(受注一覧)。Pythonの標準ライブラリだけで書いた53行の画面です。見た目の調整はしていません。

画面が早く出せるのは、テーブルの形がそのまま使えるからです。受注入力の画面も同じ工程で作り、試しに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」を返すと注記があります。銀行型の丸めとも呼ばれる方式です。得意先の設定は「四捨五入」なのに、実際の請求は偶数への丸めで出ていたことになります。

突き合わせで差が出た3件の請求の表。小計1,755,005円の税はVBAで175,500円、Web初版の四捨五入で175,501円など、3件とも1円の差
図3:突き合わせで見つかった1円の差。差が出たのは、税がちょうど0.5円になる3件だけでした。データは架空です。

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つを見ます。

  1. レポートの数と、そのうち得意先に渡す帳票の数
  2. VBAの行数と、Round・Format・DateSerialなど計算や日付を扱う行
  3. ボタンに結び付いた処理(フォームのクリック時の設定)
  4. 締めの種類(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

出典

  1. Microsoft Learn「Round function (Visual Basic for Applications)」(Round は bankers rounding を返すという注記、2024年2月更新)(2026年10月16日確認)
  2. Microsoft Learn「DoCmd.OutputTo method (Access)」(レポートを PDF に書き出す方法)(2026年10月16日確認)