AccScan
技術

Accessの画面スクショから仕様をまとめる|移行前の画面棚卸し

仕様書がないAccessの移行準備として、全フォームのスクリーンショットと入力項目・ボタン・レコードソースを文字で記録する画面棚卸しの実務手順。AllFormsでの全フォーム洗い出し、7項目の記録シート、AI活用の限界を解説します。

まずは、自社のAccessが「解析できるか」を無料で確認できます。

約2分・ファイル送信不要・発注義務なし

結論:スクショだけでは「画面の見た目」しか残らない。項目と動作を合わせて記録する

仕様書がないAccessの移行準備で「まず画面を撮っておこう」という判断は正しいです。ただし、スクリーンショットだけでは移行に必要な情報が不足します。当社の移行支援では、画面のスクショに加えて「各フォームの入力項目・ボタンの動作・データの保存先テーブル」を文字で書き出す作業をセットで行います。この両方が揃ってはじめて、画面仕様の「たたき台」として使えます。

スクショで取れるのは見た目の構造です。項目の配置・ラベル名・ボタンの数は画像に映ります。取れないのはVBAの処理ロジックです。「保存ボタンを押したときに何が起きるか」「どのテーブルにどのフィールドとして書き込むか」「バリデーションの条件は何か」は、スクショを見てもわかりません。この限界を理解したうえで棚卸しを進めることが、後からの手戻りを防ぐ最短ルートです。

全フォームの洗い出しから始める

Accessのフォームは、ナビゲーションペインに表示されているものだけが全部ではありません。オブジェクトのHidden属性やナビゲーションペインの表示設定により、一覧に見えていないフォームが存在することがあります。棚卸しはまず全フォームを一覧化するところから始めます。

全フォームを取得する確実な方法はVBAです。CurrentProject.AllFormsコレクションを列挙すると、非表示のものも含めてフォームオブジェクト名を取り出せます(Microsoft公式ドキュメントに仕様が記載されています)。下記は標準モジュールにそのまま貼り付けて実行できるコードです。

Sub ListAllForms()
    Dim obj As AccessObject
    Dim i As Integer
    i = 1
    For Each obj In CurrentProject.AllForms
        Debug.Print i, obj.Name, IIf(obj.IsLoaded, "開いている", "閉じている")
        i = i + 1
    Next obj
End Sub

イミディエイトウィンドウ(Ctrl+G)に出力された一覧をコピーしてExcelに貼り付けると、フォーム名の一覧表ができます。ここに「スクショ取得済み」「項目記録済み」「確認済み」のステータス列を追加して、棚卸し表の土台として使います。

一覧化した後は、ナビゲーションペインの右クリックから「ナビゲーションオプション」を開き、「非表示オブジェクトを表示する」を有効にしてから目視でも確認しておくと、見落としを防げます。

スクリーンショットの取り方と記録の注意点

フォームのスクショを取る際に使えるWindowsの標準機能は3つです。Alt+PrintScreenで現在アクティブなウィンドウだけを取り込めます。Windowsキー+Shift+Sを使うとSnipping Toolが起動し、任意の範囲を切り取れます。PrintScreenはデスクトップ全体を取得します(Microsoftサポートの「ウィンドウまたは画面の内容をコピーする」に記載)。

フォームをポップアップ(PopupプロパティをYesに設定)にして開くと、フォームだけが独立したウィンドウになるため、Alt+PrintScreenで背景を含まずに取得しやすくなります。ただし、設計上ポップアップでないフォームを無理に変更する必要はありません。

スクショを取るときに意識したいのは「全状態を撮る」ことです。初期表示の状態だけでなく、データが入力された状態・サブフォームが表示された状態・コンボボックスが開いた状態など、フォームが取り得る主な見た目を記録しておくと、移行先での画面設計時に参照しやすくなります。

各フォームで記録する項目

スクショと合わせて、各フォームについて次の情報を文字で記録します。スクショだけでは移行時に参照できない情報がここに集中します。

記録項目確認方法移行時の意味
フォーム名・フォームの用途ナビゲーションペイン・AllForms一覧どの業務フローに対応するかの対応表に使う
レコードソース(テーブル・クエリ・SQL文)フォームのプロパティ「レコードソース」どのテーブルのデータを表示・更新しているかの把握
各コントロールのコントロール名・種別・コントロールソースデザインビューでコントロール選択→プロパティシート(データ型は参照先テーブルで確認)移行先のフィールド定義・入力欄の対応に使う
ボタンの数と配置・ラベル名スクショ+デザインビュー移行先のアクションの対応表に使う
コンボボックス・リストボックスの選択肢の取得元コントロールのプロパティ「値集合ソース」選択肢がマスタテーブル由来か固定値かで移行設計が変わる
サブフォームの有無と連結フィールドデザインビューのサブフォームプロパティ親子関係の再現に必要
印刷帳票との対応(レポート呼び出しの有無)ボタンのイベントプロパティ・VBAコード帳票棚卸しとの突き合わせに使う

コントロール名の一覧はVBAでも取得できます。フォームを開いた状態でForm.Controlsコレクションを列挙すると、コントロール名・コントロール種別(ControlType)・各プロパティを出力できます(Microsoft Learn「Controls object (Access)」に仕様が記載)。フォームビューでも参照は可能ですが、プロパティの変更操作が必要な場合はデザインビューが前提になります。

印刷帳票との対応を合わせて確認する

フォームのボタンがレポートを開く設計になっている場合、そのフォームとレポートは「一対の機能」として記録しておくと移行時の見落としを防げます。当社の支援では、フォーム棚卸し表に「印刷ボタンがあるか」「呼び出しているレポート名は何か」を列として追加して、帳票棚卸し表(レポート一覧)と突き合わせる作業を行います。

フォームのVBAコードにDoCmd.OpenReportが含まれているか確認することでもレポート呼び出しを検出できます。この確認はAccessの帳票を棚卸しするで説明しているレポート棚卸しの手順と並行して進めると効率的です。

AI・OCRで効率化できること、できないこと

画面棚卸しの作業にAIやOCRを活用できる場面はあります。ただし「AIがスクショから仕様書を自動で生成してくれる」というイメージは現実と差があります。

スクショの画像を画像対応の生成AIに渡すと、フォーム上に見えているラベル名・ボタンの表示名・コントロールの配置を読み取って文字として出力することはできます。これは画面上の項目名一覧の下書きとして使える場合があります。ただし、スクショから確認できるのは画面に表示されている名称(Caption)であり、Access内部のコントロール名(Nameプロパティ)は映りません。内部名の確認にはデザインビューまたはForm.Controlsが必要です。当社では、AIで取得した表示名の下書きをデザインビューでの確認と突き合わせる手順を取ることがあります。

AIに任せてはいけない部分もはっきりしています。ボタンを押したときにVBAが何を実行するか、コンボボックスの選択肢がどのテーブルから来るか、バリデーションの条件は何かという情報は、スクショからは読み取れません。コンボボックスの取得元は「値集合ソース」プロパティで、バリデーションはフォームやテーブルの「入力規則」プロパティで確認できますが、VBAやマクロに実装されている場合は別途コードの確認が必要です。VBAの解析についてはAIでAccessのVBA・構造を解析するで詳しく説明しています。

.accde形式は、Accessがコンパイル時にVBAの編集可能なソースコードを削除する形式のため、VBAコードの確認・変更ができません。フォームを通常の画面で開いてスクショを撮ることと、実際に操作して動作を観察することが主な手がかりになります。精度数値を示せる性質のものではなく、「文字起こしの補助として使える場合がある」という効果として捉えるのが現実的です。

属人化したAccessで「どこから手をつけるか」に迷う場合は、ブラックボックス化したAccessの解析手順も参考になります。画面棚卸しはその中の一工程です。

棚卸し表の形式と進め方

Excelのシンプルな表で十分です。当社が使う項目は「No・フォーム名・用途(仮)・レコードソース・入力項目数・ボタン数・帳票呼び出し・スクショ取得済み・項目記録済み・担当者確認済み・備考」の11列程度です。

最初から精緻に作ろうとすると、フォームが30〜40個あるだけで表の作成に時間がかかりすぎます。最初はフォーム名と用途の仮案だけ埋めた粗い一覧を作り、スクショと項目記録を並行して進める方が現実的です。担当者へのヒアリングは、フォームの一覧と仮の用途案ができた後で行うと、「これは何のフォームですか」という質問を具体的にできるため効率が上がります。

フォーム数が多い場合(20個以上が目安)は、業務フロー上の位置づけで優先順位をつけると作業が進めやすくなります。どの業務フローにどのフォームが対応するかの整理についてはAccess移行前の業務フロー調査が参考になります。

Accessが解析できる状態かどうかは、環境や形式によって変わります。まず確認したい場合は無料の解析可否チェックからご相談ください。

よくある質問

Q. スクリーンショットさえ撮っておけば仕様書の代わりになりますか。

画面の見た目を記録する資料にはなりますが、仕様書の代わりにはなりません。ボタンの動作・データの保存先・バリデーションの条件・VBAの処理内容はスクショには映りません。スクショはあくまで「どんな項目が画面にあるか」の参照用です。移行先の開発者が実装するためには、動作の説明を文字で合わせて記録することが必要です。

Q. .accde形式でデザインビューが開けない場合、フォームの棚卸しはできますか。

.accde形式はVBAのソースコードがコンパイル時に削除されているため、VBAの確認・変更ができません。デザインビューも制限されるため、コントロールのプロパティをデザインビューで詳しく確認する手順は元の.accdbでないと難しい場合があります。フォームを通常ビューで開いてスクショを撮ることと、実際に操作して動作を観察することが主な手がかりです。コントロール名やレコードソースの確認できる範囲は限られるため、情報の精度は下がります。.accde形式の制約についてはaccde/mdeで中身が見られないAccessで説明しています。

Q. フォームが50個以上あります。全部棚卸しする必要がありますか。

全件を同じ粒度で調べる必要はありません。まずAllFormsで一覧を取得し、VBAコードやマクロから呼ばれていないフォームを「未使用候補」として仕分けてから、使用中のものを優先して詳しく調べる順番が効率的です。未使用候補も最終的に担当者に確認してから廃止判断をします。全件一律に詳細を調べると、移行前の調査だけで工数を使い果たします。

Q. スクショ取得はAccessを使える人が必要ですか。

フォームを開いてスクショを撮るだけなら、Accessの操作に不慣れな方でも対応できます。ただしデザインビューでのプロパティ確認やVBAコードの参照にはAccessの基本操作と、場合によってはVBAの読解が必要です。当社では、業務担当者にスクショと業務説明を担当してもらい、設計情報の読み取りは当社側で行う分担をとることがあります。

触れないAccessが「診断できるか」だけ、確かめませんか。

顧客データは送信不要。発注の義務もありません。

約2分・ファイル送信不要・発注義務なし/説明はオンライン・売り込みはしません