AccessからSharePointリストへ移行するには?向くケースと限界
AccessデータをSharePointリスト(Microsoft 365)へ移す選択肢を整理。向くのは単純な台帳・5,000件未満の共有リスト。リストビューのしきい値5,000件・VBA再現不可・OLEオブジェクト除外など限界と、Access Services終了との混同も解説します。
結論:SharePointリストが向くAccessと、向かないAccess
社内の小規模な台帳や共有リストで、SharePoint Onlineを含むMicrosoft 365プランをすでに契約している組織なら、SharePointリストへの移行は追加コストを抑えた現実的な選択肢になります。ただし、1回のビューで5,000件を超えるクエリ操作には制約がある点、複数テーブルを複雑にJOINするリレーション、AccessレポートのようなPDF帳票出力、VBAマクロは移行先で再現できないと考えてください。
一点、混同しやすい話を最初に整理します。「Access Web Apps」や「Access Services」は、SharePoint上でAccessをそのままWeb化しようとした別機能で、Microsoft 365では2017年6月に新規作成を停止、2018年4月に完全終了しました。今回の記事で扱うのは、それとは別の「SharePointリスト(Microsoft Lists)」への移行です。Accessのデータをシンプルなリスト形式で共有する話であり、混同しないよう注意してください。
SharePointリストとは何か
SharePointリスト(Microsoft Lists)は、SharePoint Onlineを含むMicrosoft 365プランで利用できるシンプルなデータ管理機能です。Excelの表に近い感覚で、列と行からなるリストをブラウザ上で作成・共有できます。チームサイトに置けば複数人が同時に閲覧・編集でき、通知やワークフロー(Power Automate)との連携もできます。
Accessとの大きな違いは、クエリによる任意のテーブル結合(JOIN)が使えない点です。SharePointリストには「参照列(Lookup)」という別リストへの参照機能があり、制限された範囲でリスト間の関連づけは可能です。ただし、Accessの選択クエリで複数テーブルを自由に結合して業務ロジックを組み立てるような設計は、そのまま持ち込めません。この違いが、移行の向き不向きを決める主な要因です。
SharePointリストが向くケース
次の条件に当てはまるAccessは、SharePointリストへの移行を検討する価値があります。
- テーブルが1〜2個程度で、複雑なJOINをほとんど使っていない。
- 組織がSharePoint Onlineを含むMicrosoft 365プランをすでに契約している。
- 案件リスト・備品台帳・連絡先管理など、単純な一覧入力・閲覧が中心の業務。
- VBAマクロをほとんど使っておらず、業務ロジックが単純。
- AccessレポートのようなPDF形式の精密な帳票印刷は不要で、ブラウザ上での閲覧・入力で完結する。
特に「担当者が代わるたびにAccessファイルをUSBで渡している」「複数人が同じファイルを開けずに困っている」という状況は、SharePointリストで解消できる可能性が高いです。ブラウザで開くので、特定のPCにAccessをインストールする必要もなくなります。
SharePointリストの制限と向かないケース
一方で、Accessの用途が少し複雑になると、SharePointリストでは要件を満たせなくなります。制限値は公式ドキュメントに明記されているため、移行前に確認してください。
| 制限の種類 | 上限値・仕様 | 注意点 |
|---|---|---|
| リストビューのしきい値 | 5,000件 | 1回のビューやクエリで5,000件を超えるアイテムを処理しようとすると制限されます(リスト全体のデータ保存上限ではありません)。インデックスを設定した列でフィルタをかけることで回避できる場合があります。Microsoftの公式ドキュメント(Manage large lists and libraries)に詳細が記載されています。 |
| リストあたりの最大アイテム数(保存) | 3,000万件 | 保存自体は3,000万件まで可能ですが、ビューしきい値(5,000件)を超えたリストを運用するにはインデックスとフィルタの設計が必要です。MicrosoftのSharePoint制限の公式ドキュメントに記載があります。 |
| リストアイテムへの添付ファイル | 250MBまで | リストアイテムに添付する各ファイルは最大250MB。 |
| リレーション(複雑な多テーブルJOIN) | 標準機能では再現不可 | 参照列(Lookup)による限定的なリスト間参照は利用できますが、Accessのクエリで行う任意の多テーブルJOINや複雑な集計をそのまま移行することはできません。 |
| VBAマクロ | 移行不可 | AccessのVBAはSharePointリストでは動きません。自動化が必要なら、Power Automateやリストのルール機能で再実装を検討します。 |
| 精密な帳票出力 | 標準機能では再現不可 | ブラウザから一覧を印刷することはできますが、Accessレポートのような集計・改ページ・明細配置を備えた精密な帳票機能は標準では提供されません。 |
ビューしきい値の5,000件は、SharePoint Online(Microsoft 365)では管理者でも変更できない仕様です。インデックスとフィルタを組み合わせた運用を設計できれば5,000件超のリストも使い続けられますが、業務的に「全件を条件なしで一覧表示したい」用途には向きません。データ量が多い場合は、Accessの移行先を比較した記事を参照し、SQL Serverやクラウドデータベースも選択肢に入れてください。
複雑なJOINや精密な帳票が必要な場合は、Power Appsとの組み合わせや、Webシステム化を検討する方が現実的です。
AccessデータをSharePointリストへ移す方法
主な移行方法は3つあります。いずれも、事前にOLEオブジェクト型の列がないかなど、テーブル構造を確認してから進めてください。
- データベースウィザードで複数テーブルをまとめて移動する方法:Accessの「データベースツール」→「データの移動」→「SharePoint」から起動するウィザードで、複数テーブルを一括でSharePointリストに移動し、Access側をリンクテーブル化します。Accessのフロントエンド(フォーム・レポート)をそのまま残しながらデータだけSharePointに移したい場合に向きます。この方法は.accdb形式のデータベースで利用できます(.mdb形式は事前に変換が必要)。OLEオブジェクト型や1900年以前の日付データは移行できず、自動採番(AutoNumber)はID列を除き引き継がれません。
- 単一テーブルのエクスポートを使う方法:Access上でテーブルを右クリックし「エクスポート」→「SharePointリスト」を選びます。テーブルを1つずつSharePointリストとして書き出せますが、OLEオブジェクト型フィールドは出力されず、計算フィールドは値のみで計算式は引き継がれません。
- CSV経由で手動移行する方法:AccessからCSVでエクスポートし、SharePointリストにインポートします。データ量が少ない場合に手軽ですが、列のデータ型を手動で設定し直す手間がかかります。
どの方法でも、AccessのVBA・マクロ・フォーム・レポートは一切引き継がれません。自社のAccessがどの程度VBAや複雑なクエリに依存しているかが不明な場合は、まず現状を可視化することが先決です。無料の解析可否チェックでAccessファイルの構造的な複雑さを確認できます。
「Access Web Apps / Access Services」との混同に注意
ネット上には「AccessをSharePointで使う」という記事が残っていますが、その多くはすでに終了した「Access Services」「Access Web Apps」の話です。MicrosoftはMicrosoft 365/SharePoint Online上のこのサービスを、2017年6月に新規作成を停止し、2018年4月に終了させました(Access Services in SharePoint Roadmap)。オンプレミスのSharePoint Serverについては別扱いです。
現在のMicrosoft 365環境でできることは「SharePointリストにデータを移す」「Power AppsでSharePoint上にフォームを作る」といった形で、AccessそのものをSharePoint Online上で動かすことはできません。「SharePoint移行」を検討している場合、この点は確認が必要です。Accessの廃止と終了に関する情報整理も参考にしてください。
よくある質問
Q. AccessのVBAをSharePointリストでそのまま使えますか。
使えません。SharePointリストはVBAの実行環境を持っていません。業務の自動化が必要な場合、Power Automateやリストのルール機能、Power Appsなどで再実装を検討することになりますが、Access VBAで組んだ複雑なロジックを完全に再現するのは難しいケースもあります。
Q. 5,000件のビューしきい値を回避する方法はありますか。
インデックスを設定した列でフィルタをかけると、しきい値を超えたリストでも表示できる場合があります。ただしSharePoint Online(Microsoft 365)では、管理者でもしきい値自体を変更することはできません(SharePoint Serverオンプレミス版では管理者が変更可能)。全件を条件なしに一覧表示する業務では、設計上の制約として最初から織り込んでおく必要があります。
Q. AccessのOLEオブジェクト型フィールドはSharePointリストに移せますか。
移せません。OLEオブジェクト型はSharePointリストに対応するデータ型がなく、エクスポート時に除外されます。画像やWord文書を格納している場合は、SharePointのドキュメントライブラリに別途移す設計が必要です。
Q. リレーションのある複数テーブルをSharePointリストに移せますか。
各テーブルを別々のリストとして移すことは可能です。参照列(Lookup)を使えば別リストの値を参照することもできます。ただしAccessのクエリのように任意のJOINで集計・抽出する処理はそのまま移行できません。Power Appsと組み合わせることで複数リストのデータを1画面に統合する構成は取れますが、構築コストが上がります。複雑なリレーションがある場合は、移行先の比較で他の選択肢も確認してください。
触れないAccessが「診断できるか」だけ、確かめませんか。
顧客データは送信不要。発注の義務もありません。
約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません