Access から Power Apps への移行完全手順 2026:VBA を Power Fx へ書き換える実装ガイド

この記事をシェア:
目次 クリックで開く

Access から Power Apps への移行完全ガイド ── Dataverse 7ステップ・規模別TCO・VBA→Power Fx 実コード片

執筆: Koki Soga(Aurant Technologies アーキテクト・コンサルタント) 最終更新: 2026-05-15

「Access を Power Apps に移行する」という決定をしたあと、最初に詰まるのが「結局どこから手を付けるか」です。Microsoft 公式の Dataverse 移行ツールは強力ですが、業務側との合意・ライセンス選定・ガバナンス設計・VBA の扱いまでをまとめて見渡せる日本語の実装ガイドは、まだ多くありません。

本記事は、Aurant Technologies が支援してきた Access → Power Apps 案件の知見をベースに、Dataverse 移行 7 ステップ・規模別 5 年 TCO・VBA → Power Fx 実コード片 6 種・ガバナンス 3 点セットを中心に整理します。Power Apps 単体ではなく、Power Platform 全体としての設計図を提示します。


1. Access から Power Apps への移行で押さえる3つの分岐

移行の成否は、最初の 3 つの分岐で 8 割が決まります。

分岐1:どの Power Apps を使うか(Canvas / Model-driven / Power Pages) 3 種類で開発思想がまったく違います。Access フォームの感覚に近いのは Canvas、Access リレーション設計の延長は Model-driven、社外公開は Power Pages です。詳細は第 2 節で扱います。

分岐2:どのデータバックエンドを選ぶか(Dataverse / SharePoint / Azure SQL) ここを誤ると、後でライセンス費用が倍以上になります。Dataverse はリッチだが Premium ライセンス必須、SharePoint は安価だが業務データ向きではない、Azure SQL は柔軟だが運用負荷が乗る。詳細は第 3 節で扱います。

分岐3:VBA をどうするか(変換/棚卸し/捨てる) 500 行未満なら捨てて Power Fx で書き直し、500〜3,000 行なら段階変換、3,000 行超なら .NET 内製や Salesforce など別選択肢を併せて比較。詳細は Access VBA をモダン言語へ変換する完全ガイド も参照してください。

この 3 分岐を Phase 1 で確定させると、それ以降の進行が劇的に楽になります。


2. Power Apps 3種類の使い分け:Canvas/Model-driven/Power Pages

種類 設計思想 Access から見た親和性 適する業務
Canvas Apps UI 自由設計、画面ファースト Access フォーム感覚 現場入力アプリ、モバイル業務
Model-driven Apps Dataverse スキーマから自動生成 Access リレーション設計の延長 案件管理、顧客管理、ワークフロー
Power Pages 社外向け Web サイト Access の Web 公開機能の後継 申請窓口、顧客ポータル

使い分けの実務判断

Canvas を選ぶケース:現場の入力業務、モバイル必須、UI レイアウトが業務の鍵。Access の「入力フォーム+簡単な参照」を置き換える典型用途です。

Model-driven を選ぶケース:データ件数が多く、複数テーブルの参照・更新が日常業務。Dataverse とセットでないと使えません。Access のリレーショナル DB 機能を素直に置き換えるなら第一候補です。

Power Pages を選ぶケース:取引先・顧客に Web フォームで申請してもらう、認証付きポータルを提供する、など社外公開用途。Access には根本的にできなかった領域です。

混在も可能です。「Model-driven で顧客マスタを管理、Canvas で営業のモバイル入力、Power Pages で顧客ポータル」という構成は実案件で頻出します。


3. データバックエンドの選択:Dataverse/SharePoint/Azure SQL

Power Apps の費用と機能は、データソースで決まります。

観点 Dataverse SharePoint List Azure SQL Database
標準ライセンス Premium 必須 Microsoft 365 付帯 Premium 必須(接続側)
データ件数上限 数千万件超 5,000件超で性能劣化 制限実質なし
リレーション ネイティブ対応 ルックアップで擬似 SQL でフル対応
トランザクション あり なし あり
バックアップ 自動 OneDrive依存 Azure側で設計
行レベルセキュリティ あり リスト権限のみ RLS設計可能
月コスト目安(50名) 約9万円〜(Premium 50名) 0円(M365込み) 約3万円〜(DBインスタンス+接続)

選び方の原則

Access から 業務データ(顧客マスタ、受注、在庫など)を移すなら Dataverse 一択です。SharePoint List は「お知らせ一覧」「申請履歴」のような軽量なリスト用途に留めます。

Azure SQL は 既存の SQL Server 資産がある場合や、Power BI からの大量集計クエリ前提など、特定の条件で選びます。一般用途の第一候補にはなりません。詳細は Access バックエンドを Azure SQL に切り出すハイブリッド構成 を参照してください。


4. Access の機能と Power Apps の対応マッピング

Access 機能 Power Apps の対応 注意点
テーブル Dataverse テーブル 一部データ型は変換必要(第 6 節)
クエリ(選択) ビュー / Filter / Search 集計クエリは Power BI と分担
クエリ(更新・追加・削除) Patch / UpdateIf / Remove ループ前提から宣言的書き方へ
フォーム Canvas または Model-driven レイアウト自動移行は不可、再設計
レポート Power BI / Power Pages 固定様式帳票は別ツール検討
マクロ Power Automate 第 7 節で詳細
VBA Power Fx + Power Automate 第 5 節で詳細
リレーションシップ Dataverse リレーション 多対多は中間テーブル不要

Access フォームのレイアウトを自動移行する公式ツールは存在しません。フォームは必ず Canvas / Model-driven で再設計が必要です。これを「自動でできる」と説明する記事もありますが、実装すると必ず破綻します。


5. VBA → Power Fx 変換:6パターンの実コード片

Power Fx は Excel 数式の延長で書ける宣言型言語です。VBA の手続き型から発想を切り替える必要があります。

主要変換パターン

パターン1:レコード検索(DLookup)

' VBA
Dim sName As String
sName = Nz(DLookup("CustomerName", "tblCustomers", "CustomerCode='" & Me.CustomerCode & "'"), "")
// Power Fx
Set(varCustomerName,
    LookUp(Customers, customerCode = CustomerCodeInput.Text, customerName)
);
If(IsBlank(varCustomerName), Notify("該当顧客なし", NotificationType.Warning))

パターン2:レコード追加

db.Execute "INSERT INTO tblOrders (CustomerCode, Amount) VALUES ('A001', 50000)"
Patch(Orders, Defaults(Orders), { customerCode: "A001", amount: 50000 })

パターン3:条件分岐の一括更新

db.Execute "UPDATE tblOrders SET Status='Approved' WHERE Status='Pending'"
UpdateIf(Orders, status = "Pending", { status: "Approved", approvedDate: Now() })

パターン4:ループ処理

Dim rs As DAO.Recordset
Set rs = db.OpenRecordset("SELECT * FROM tblOrders WHERE Status='Pending'")
Do Until rs.EOF
    rs.Edit
    rs!Status = "Approved"
    rs.Update
    rs.MoveNext
Loop
ForAll(
    Filter(Orders, status = "Pending"),
    Patch(Orders, ThisRecord, { status: "Approved" })
)

パターン5:メッセージ表示

MsgBox "登録しました", vbInformation
Notify("登録しました", NotificationType.Success, 3000)

パターン6:エラーハンドリング

On Error GoTo ErrHandler
db.Execute "INSERT INTO ..."
Exit Sub
ErrHandler:
    MsgBox Err.Description
IfError(
    Patch(Orders, Defaults(Orders), { /* ... */ }),
    Notify("登録失敗: " & FirstError.Message, NotificationType.Error)
)

VBA から見たときの最大の発想転換は、ループを ForAll や UpdateIf に置き換えることです。Power Fx ではループは「データセット全体に対する宣言的な操作」として書きます。kintone JS / Apex / Python / C# も含めた 5 言語並列の変換表は、Access VBA をモダン言語へ変換する完全ガイド にまとめてあります。


6. Dataverse へのスキーマ移行 7ステップ

Access のスキーマを Dataverse に移行する標準手順です。Microsoft 公式の Dataverse 移行ツールが Access に同梱されており、テーブル・リレーション・データを一括で運べます。

ステップ1:Dataverse 環境の作成

Power Platform 管理センターで対象の環境を作ります。本番に直接ではなく、まず開発環境(Sandbox)から始めることが鉄則です。

ステップ2:データ型の事前確認

Access のすべてのデータ型が Dataverse でサポートされているわけではありません。事前に確認すべき非対応・要変換のデータ型は次のとおりです。

Access 側 Dataverse 側 対応
OLE オブジェクト (非対応) ファイル列・添付に分離
ハイパーリンク 単一行テキスト URL文字列として保存
添付ファイル ファイル / 画像 移行ツールで自動変換可
計算フィールド 計算列 式の再定義が必要
Long Integer 自動採番 Auto Number 既存値の保持は手動

ステップ3:Access から移行ツール起動

Access のリボン「データベース ツール」→「Dataverse に移動」→ 接続情報入力。Microsoft アカウント認証後、対象テーブルを選択します。

ステップ4:依存関係の解決

リレーションが張られているテーブルは、参照側を先に移行する必要があります。移行ツールは自動で依存関係を解析しますが、循環参照がある場合は手動で順序を指定します。

ステップ5:データ検証

移行完了後、レコード件数・主要列の値の合計・最大最小を Access 側と突合します。文字エンコード・日付フォーマット・小数点処理の差で値がずれることがあるため、ここを省略すると本切替で詰まります。

ステップ6:Power Apps 接続テスト

Canvas または Model-driven アプリを 1 つ作り、移行した Dataverse テーブルへの読み書きを確認します。ユーザー権限(セキュリティロール)もこの段階で設計します。

ステップ7:本番反映と切替

Sandbox から本番環境へのデプロイは Power Platform の Solution パッケージで行います。データ自体はもう一度移行ツールを本番に対して実行します。並行稼働期間(旧 Access と新 Power Apps を 1 〜 3 ヶ月並走)を必ず設けます。


AccessのVBAをPower Appsへ移行する前に、統合基盤との接続設計はお済みですか?Aurant のシステム統合支援は、SaaS・基幹・Excelに分散したデータの統合基盤づくりから、段階的な基幹刷新までを一貫して支援します。✓ データ統合基盤の構築✓ 段階刷新のロードマップ✓ SaaS連携の設計・実装システム統合支援を見る →つなぐものと変えるものを分ける分散SaaS統合基盤基幹刷新統合基盤・段階刷新・連携

7. Power Automate との連携:Access マクロから移行する5パターン

Access マクロや一部の VBA 自動処理は、Power Automate に分離します。アプリ内ロジック(Power Fx)と業務フロー(Power Automate)を分けることが、保守性の鍵です。

Access マクロ Power Automate での実装
レポートを開いて印刷 Word/PDF 生成アクション → メール送信
OutlookSend でメール送信 「メールの送信(Outlook)」アクション
期限を過ぎたら警告 スケジュール トリガー + 条件分岐
ファイルをインポート SharePoint / OneDrive トリガー + 解析
別 Access を起動 該当業務を Power Automate のフローに統合

設計のコツ

Power Automate のフローは「1 業務 1 フロー」ではなく、「再利用部品+呼び出し元フロー」の構成で書くと、後で別業務に展開しやすくなります。たとえば「PDF を作って指定先にメール送信」は子フローにし、各業務フローから呼び出します。


8. Claude Code を使った半自動変換

3,000 行を超える VBA を全部手で書き直すのは現実的ではありません。Claude Code に変換のドラフトを生成させ、人間が検証・補正するワークフローが推奨です。

標準手順

  1. 1. VBA をエクスポート.bas ファイル形式で書き出します。Access の Application.SaveAsText で自動化可能です。
  2. 2. 意図のドキュメント化:Claude Code に各プロシージャの入力・出力・副作用・業務目的を vba_doc/{module}.md として要約させます。
  3. 3. マッピング合意:本記事 5 節の表を mapping.md として渡し、変換ルールを統一します。
  4. 4. Power Fx 変換:マッピングに従ってドラフトを生成。コメントは日本語のまま残します。
  5. 5. 人間レビュー:業務責任者を交えて仕様乖離を確認し、TODO 箇所を順次潰します。

実プロジェクトでは、3,000 行規模で 2 週間(人手のみだと 2 〜 3 ヶ月)に収まります。具体的なプロンプト 5 本と詳細手順は Access VBA をモダン言語へ変換する完全ガイド の第 8 章にまとめています。


9. ライセンス・コスト構造と規模別5年TCO試算

Power Apps のライセンスは 2 種類です。実コストはデータソース選定で大きく変わります。

プラン 月額(参考) 含まれるもの
Per App 約 ¥1,200/ユーザー/アプリ 1 アプリ + 1 Power Pages、Premium コネクタ
Per User Premium 約 ¥3,000/ユーザー 無制限アプリ、Premium コネクタ、Dataverse
M365 付帯(Basic) 0 円(M365 ライセンスに込み) SharePoint List のみ、Premium コネクタ不可

規模別5年TCO試算(万円)

Dataverse + Premium ライセンス前提で計算します。

項目 小(10名) 中(50名) 大(200名)
Power Apps Premium ライセンス 180 900 3,600
Dataverse ストレージ(追加分) 30 100 400
Power Automate Premium(必要分) 30 150 600
初期構築(PoC + 本実装) 200 800 2,500
運用保守・改修 100 500 1,800
ガバナンス・管理者工数 50 200 700
5年累計合計 590 2,650 9,600

同条件の kintone と比較すると、小規模では Power Apps が約 1.4 倍、中規模では約 1.4 倍、大規模では約 1.6 倍のコスト感です(kintone 側の数値は Access vs kintone 完全比較 第 2 節を参照)。

ただし、Power Apps は 既存の Microsoft 365 環境との統合・Power BI との直結・Azure AD ベースの権限管理を標準で持つため、Microsoft エコシステム前提の組織では総合的に Power Apps が有利になることが多くなります。

コストを抑える3つの工夫

  • 全員 Premium ではなく、データ閲覧のみのユーザーは Per App プランを併用
  • Dataverse ストレージは「ファイル列」を多用すると急増する。添付は SharePoint / OneDrive に分離
  • Power Automate Premium が必要なフローは限定する(Standard コネクタで済むなら付帯ライセンスで足りる)

10. ガバナンス:Environment/DLP/ALM の3点セット

中規模以上で必ず詰まるのがガバナンスです。Power Apps は誰でも作れるため、3 〜 6 ヶ月で「野良アプリ問題」が顕在化します。

Environment(環境分離)

開発(Dev)/検証(Test)/本番(Prod)の 3 環境を最低限分けます。「個人サンドボックス」を全社員に配布し、本番にはガバナンスを通ったアプリだけが上がる構造を作ります。

DLP(データ損失防止ポリシー)

Power Apps のコネクタは標準で 1,000 種類超あり、SNS や個人クラウドへのデータ送信も技術的には可能です。DLP ポリシーで「業務利用可」「機密データ可」「禁止」の 3 グループに分け、本番環境では機密データを業務外コネクタに渡せないようにします。

ALM(アプリケーションライフサイクル管理)

Power Platform CLI と GitHub Actions / Azure DevOps を組み合わせ、アプリを Solution パッケージで Git 管理します。50 アプリを超える組織では必須です。Solution import / export の自動化、環境間プロモートの自動化、Dataverse スキーマのバージョン管理を整備します。

ガバナンス整備は移行プロジェクトの Phase 3 〜 4 で進めますが、Phase 1 の段階で構築方針だけは決めておかないと、後から組み直すコストが膨らみます。


11. 移行プロジェクトの進め方

Phase 期間 内容 主担当
1. 棚卸し・3分岐確定 1ヶ月 Access 全棚卸し、Power Apps種類選定、データソース選定、VBA戦略 IT + 業務
2. PoC 構築 2〜4ヶ月 1業務だけ Power Apps で並行構築、Dataverse スキーマ確定 業務主導 + IT伴走
3. 本格移行 4〜8ヶ月 データ移行、業務単位で本切替、VBA 段階変換 IT + 業務
4. ガバナンス整備 8ヶ月以降 DLP、ALM、CoE 立ち上げ、横展開 IT 主導

Phase 1 の精度がプロジェクト全体の品質を決めます。本記事の第 1 〜 3 節を Phase 1 のチェックリストとして使い、「3 分岐すべて決まったか」「Dataverse 環境設計は完了したか」「VBA 戦略は合意できたか」を必ず確認してから Phase 2 に進んでください。


まとめ

Access から Power Apps への移行は、Power Apps 単体の選択ではなく Power Platform 全体の設計として進める必要があります。本記事で押さえてほしい 4 点を再掲します。

  • 3 分岐を Phase 1 で確定する(Power Apps 種類 / データソース / VBA 戦略)
  • Dataverse 移行は 7 ステップで、データ型確認を省略しない
  • VBA は 6 パターンで Power Fx に変換、ループは宣言型に発想転換
  • 5 年 TCO は規模ごとに事前試算、Dataverse ストレージとガバナンス工数も忘れない

Aurant Technologies では Access → Power Apps 移行を Phase 1 の棚卸しから Phase 4 のガバナンス整備まで一気通貫で支援しています。VBA 行数・利用者数・現状のデータソースを共有いただければ、本記事のフレームに沿った第一案を返信します。無料相談窓口 から問い合わせ可能です。


関連記事

基幹システムの刷新・移行とデータ統合のご相談

老朽化した基幹システムの刷新やERP移行、社内システム同士のデータ連携を、業務を止めない形で支援します。移行方式や構成が妥当かを確認したい、という導入前後のセカンドオピニオンにも対応しています。

基幹システム刷新・連携支援を見る →

AI×データ統合 無料相談

AI・データ統合・システムの最適な組み合わせを、企業ごとに設計・構築します。「何から始めるべきか分からない」という段階からでも、まずはお気軽にご相談ください。

AT
aurant technologies 編集

上場企業からスタートアップまで、数多くのデータ分析基盤構築・AI導入プロジェクトを主導。単なる技術提供にとどまらず、MA/CRM(Salesforce, Hubspot, kintone, LINE)導入によるマーケティング最適化やバックオフィス業務の自動化など、常に「事業数値(売上・利益)」に直結する改善実績多数。

この記事が役に立ったらシェア: