Microsoft Accessのデータベースを、ウェブアプリとして作り直す
御社の業務を支えるAccessデータベースを、テーブル、クエリ、フォーム、レポート、VBAコードまで含めて、SQL ServerまたはMySQLを使うウェブアプリとして作り直します。データはそのまま引き継ぎ、画面は現在の作業の流れに合わせるので、新しい手順を覚える必要はありません。
なぜ今なのか
Access 2021のマイクロソフトによるサポートは、Office 2021全体とともに2026年10月13日に終了します。Access 2016とAccess 2019のサポートは、Windows 10と同じ2025年10月14日に終了しました。その日を境にAccessファイルが開けなくなるわけではありませんが、セキュリティ更新は届かなくなり、WindowsやMicrosoft 365が更新されるたびに、参照の切れ、読み込めなくなるActiveXコントロール、見当たらない32ビットドライバーといった問題が起きる可能性が高まります。
実際には、もっと身近な理由で移行を決めることのほうが多いものです。ファイルは共有ドライブにあり、仕組みがわかるのは一人か二人、社外からはリモートデスクトップ経由でしか使えず、Accessファイルの上限である2 GBに近づいている、といった理由です。
- Windows 10、Access 2016、Access 2019マイクロソフトのサポート終了
- Access 2021とOffice 2021マイクロソフトのサポート終了
移行する内容
テーブルだけでなく、データベースを動かしているものすべて。
テーブルとリレーションシップ
データ型、主キー、インデックス、参照整合性つきのリレーションシップ、入力規則、既定値。オートナンバー型のフィールドはID列になり、既存の値を保つので、請求書番号や受注番号は変わりません。
クエリ
選択、追加、更新、削除、クロス集計の各クエリ。開いているフォームの値を読むものも含みます。一つずつ新しいデータベース向けに書き直し、元の結果と照合します。
フォームとサブフォーム
入力画面、帳票フォーム、連動するリストを持つコンボボックス、メイン/サブの構成。同じ項目が同じ順に並ぶウェブページになります。
レポート
合計と改ページのあるグループ化レポート、宛名ラベル、そして請求書や納品書のように印刷したりPDFで送ったりする書類。
VBAモジュールとマクロ
フォームのコード、標準モジュール、AutoExec、埋め込みマクロ。業務ルールはサーバーに移り、どの利用者にも同じように適用されます。
リンクテーブルと外部データ
他のAccessファイル、Excelシート、ODBCデータソース、SharePointリストへのリンク、そして誰かが毎週実行しているインポートやエクスポートの処理。
ウェブ版の画面
- ダッシュボード
- 作業伝票312
- 顧客1,148
- 車両
- 部品
- 請求書
年次点検。フロントブレーキパッド交換。エアコン点検。
| 部品 | 数量 | 単価 | 金額 |
|---|---|---|---|
| オイルフィルター | 1 | €14.90 | €14.90 |
| エンジンオイル 5W-30(L) | 4.5 | €11.20 | €50.40 |
| フロントブレーキパッド | 1 | €64.50 | €64.50 |
| エアフィルター | 1 | €18.60 | €18.60 |
| 工賃(時間) | 2.5 | €54.00 | €135.00 |
| 合計 | €283.40 | ||
| 部品 | 数量 | 単価 | 金額 |
|---|---|---|---|
| オイルフィルター | 1 | €14.90 | €14.90 |
| エンジンオイル 5W-30(L) | 4.5 | €11.20 | €50.40 |
| フロントブレーキパッド | 1 | €64.50 | €64.50 |
| エアフィルター | 1 | €18.60 | €18.60 |
| 工賃(時間) | 2.5 | €54.00 | €135.00 |
整備工場の作業伝票をAccess 97で作るとこう見えるという例と、同じ画面をウェブアプリにしたもの。
つまみをドラッグするか、矢印キーを使ってください。
各部分の移行先
- Accessでは:.accdbまたは.mdbのバックエンドにあるテーブル
- ウェブアプリでは:SQL ServerまたはMySQLのテーブル(キーとリレーションシップはそのまま)
- Accessでは:保存済みクエリ
- ウェブアプリでは:ビュー、ストアドプロシージャ、またはアプリ内のクエリ
- Accessでは:フォームとサブフォーム
- ウェブアプリでは:同じ項目を持つウェブページ(どのブラウザでも利用可)
- Accessでは:レポート
- ウェブアプリでは:サーバーが作成する印刷用ページとPDFファイル
- Accessでは:フォームのイベントに書かれたVBA
- ウェブアプリでは:サーバー上で動くチェックとルール
- Accessでは:ワークグループ情報ファイル(.mdw)、またはログインなし
- ウェブアプリでは:役割つきの個人アカウントと、誰が何を変更したかの記録
移行の進め方
48時間以内の診断
.mdbまたは.accdbファイルのコピー(データベースが分割されている場合はフロントエンドとバックエンドの両方。実データの代わりにテスト用データでも構いません)をお送りください。48時間以内に書面の診断書でお答えします。現在のプログラムの働き、リスクのありか、ウェブ版の構成、パイロットモジュールの固定価格、残りの部分の見積もりです。無料で、何の義務も生じません。
パイロットモジュール
実データのコピーを使って、アプリの一部分、通常はいちばんよく使われる部分を作ります。残りを決める前に、社員の方に日々の業務で使っていただきます。
同じデータで、同じ結果
新しいデータベースでクエリとレポートを実行し、レコード数、合計、印刷される数字をAccessの元の結果と照合します。見つけた業務ルールはすべて自動テストにもし、その後のリリースのたびに改めて確認します。すべての確認結果を記した報告書をお渡しします。
30日間の並行稼働
アプリ全体が完成したら、Accessデータベースも30日間並行して使います。違いがあれば旧プログラムが残っているうちに見つかり、合意した価格の範囲内で修正します。
よくある落とし穴と、その対処
JetとACEのSQLは標準SQLではない
Accessでは
LIKEのワイルドカードに*と?を使いますが、SQL ServerとMySQLでは%と_です。日付は#で囲み、Trueは-1として保存されます。IIf、Nz、Format、DateSerialといった関数にはそのまま対応するものがありません。SQL文をそのまま写すと、クエリがエラーになるか、さらに悪いことに別の行を返します。当方ではクエリを一つずつ書き換え、結果を元のものと比較します。ループやクエリの中の定義域集計関数
DLookup、DCount、DSumは便利ですが、呼び出すたびに別のクエリが実行されます。帳票フォームや別のクエリの中に置くと、1画面のために数千回実行されることもあります。ウェブ版では、データベースサーバーが一度に処理する結合とグループ化クエリに置き換えます。開いているフォームの値を読むクエリ
[Forms]![frmOrders]![txtCustomerID]のような条件は、そのパソコンでそのフォームが開いている間しか機能しません。こうした参照をパラメーターに変え、同じクエリをどのページやレポートからも使えるようにします。Yes/No型、通貨型、日付/時刻型のフィールド
AccessはYes/Noを0と-1で、通貨型を小数点以下4桁で、日付を時刻も含みうる数値として保存します。注意せずに移すと、合計が数セントずれたり、3月31日で絞り込んでも何も出なかったりします。フィールドの型ごとに対応を明示し、移行のたびに合計を照合します。
添付ファイル型、複数値、ルックアップのフィールド
これらのフィールド型は.accdb形式にしかなく、裏で別のテーブルを隠し持っています。通常の関連テーブルに置き換え、添付ファイルはデータベースから参照する保存ファイルにします。
パソコンごとに置かれたフロントエンド
多くのデータベースは、各席のパソコンに置かれたフロントエンドのコピーに依存しています。バージョンが揃っていないこともあり、バックエンドへのパスはネットワークドライブを指しています。診断の段階で、どのコピーが最新か、コードがどのパス、プリンター、アドインを前提にしているかを確認します。
価格とお支払い
診断
無料
書面で、48時間以内
パイロットモジュール
€1,000–1,500
通常。着手時50%、検収時50%
お支払い条件
着手時に50%、検収時に50%をお願いしています。残金は本番稼働とソースコードの引き渡しの前にお支払いいただきます。大きなプロジェクトは、合意したフェーズごとのお支払いになります。
診断は無料です。先に進まないと決めた場合も、診断書はお手元に残り、費用は一切かかりません。
価格は固定で、作業開始前に書面で合意します。作業内容が変わる場合は新しい見積書をお送りし、ご承認をいただいてから追加作業に入ります。
全面移行の場合、一般的な開発会社の見積もりより40〜60%低い価格を目標にしています。オフィス費用も営業部門もない小さなスタジオだからこそ可能です。
価格は税抜です。
テストで裏付けた、実際の移行
NorthwindはマイクロソフトがAccessに同梱していたサンプルデータベースで、当方の顧客ではありません。公開されているコピーをSQLiteとPostgreSQLに移行し、すべてのテーブルとクエリを自動テストで元データと比較したうえで、その結果をもとに動くウェブアプリを構築しました。事例には数値を、同等性報告書にはすべての確認項目を掲載しています。

よくある質問
ウェブ版を作っている間もAccessを使い続けられますか?
はい。これまでどおりデータベースでお仕事を続けてください。本番切り替えの直前に最新のコピーからデータを移し直し、その後30日間は新しいアプリと並行してデータベースも使えます。
Accessのフォームは残して、データだけSQL Serverに移せますか?
可能です。会社によってはそれが最初の一歩として適切な場合もあります。テーブルをSQL Serverに移し、Accessのフロントエンドからリンクします。容量や安定性の問題は解決しますが、社外からの利用やOfficeへの依存は解消されません。どちらが合っているかは診断でお伝えします。
Access 97や2003の.mdbファイルですが、問題ありませんか?
問題ありません。.mdbと.accdbのどちらにも対応しています。古い.mdbでユーザーレベルのセキュリティが設定されている場合はワークグループ情報ファイル(.mdw)も必要になりますので、お送りいただく前にご案内します。
レポートはどうなりますか?
各レポートは、印刷やPDF保存ができるページとして、同じグループ分けと合計で作り直します。そのうえでAccessと新しいアプリに同じデータを処理させ、レポートの数字がすべて一致することを確認します。
ウェブ版は何人まで同時に使えますか?
アプリよりもデータベースサーバーによって決まります。SQL ServerやMySQLは、共有のAccessファイルよりはるかに多くの同時利用者に対応できます。利用人数に合ったホスティングを診断でご提案します。
アプリはどこで動きますか?
御社が選ぶサーバーやクラウドサービス、または当方で手配するホスティング上で動かします。C#とASP.NET Core、あるいはPHPとMySQLといった一般的な技術を使うため、日々の運用は御社のIT業者に引き継げます。
その他のサービス
すべてのサービス- 古いソフトウェアの刷新Access、Excel VBA、VB6、Delphi、古い.NETをウェブ向けに作り直す
- Excel VBAからウェブアプリへマクロ、ユーザーフォーム、連動するシートを持つブックを、複数人で使えるウェブアプリにします。
- VB6アプリの移行Visual Basic 6のプログラムを、ソースコードの有無にかかわらずC#とウェブへ移行します。
- Delphiアプリの移行BDE、Paradox、dBaseを使うDelphiプログラムを、SQLデータベース上のウェブアプリに移行します。
- 古い.NETアプリの刷新WinFormsやASP.NET Web Formsのアプリを、使える部分は活かしながらASP.NET Coreへ移行します。
お問い合わせ
ご都合のよい方法をお選びください。1営業日以内に、日本語でメールにてお返事します。
ファイルをお送りください
Access、Excel、VB6、Delphi、古い.NETで作られたプログラムなら、ファイル送付後48時間以内に無料の診断書をお届けします。
- ファイルのコピーを作成します。テスト用データでもかまいません。
- フォームまたはメールに添付します。パスワード付きの圧縮ファイルにし、パスワードは別送するのがおすすめです。ご希望があれば、先に秘密保持契約を結びます。
- 48時間以内に、診断書とパイロットモジュールの固定価格をお届けします。
イタリアを拠点に活動しています。