この記事で分かること
- Access VBAの修正を他社へ依頼する際に、事前調査が不可欠となる理由とそのメリット
- スムーズな引き継ぎとコスト抑制のために、事前に準備・把握しておくべき4つの調査項目
- 自社で実施できる準備作業と、最初から専門会社へ任せるべき作業の適切な切り分け基準
- 他社への修正依頼時によく発生する代表的なトラブル事例と、それを防ぐための具体的な対応策
Access VBAの修正を他社へ依頼する前に事前調査が不可欠な理由
社内で開発された、あるいは過去に他社が構築したAccessのVBAシステムを別の業者に修正してもらう際、なぜ事前の状況調査が必要なのでしょうか。その理由は、Access特有のシステム構造と、改修作業におけるリスク管理にあります。
まず大きな要因として、Accessシステムは「ブラックボックス化しやすい」という性質が挙げられます。Accessは、データベース(テーブル)と操作画面(フォーム)、帳票(レポート)、そして処理を自動化するVBA(Visual Basic for Applications)コードが1つのファイル、あるいは密接に関連した複数のファイルに混在して構成されています。構築当時の設計書や仕様書が残っていないことが多く、ソースコードの中に「どのような意図で書かれたか分からない記述」や「現在は使われていない古いマクロ」が残されている場合が多々あります。この状態で他社に修正を依頼すると、開発会社はプログラム全体の構造をゼロから解読しなければならず、解析のための工数(時間と人件費)が余計に発生します。
また、事前調査を怠ると、修正作業が始まってから予期せぬエラーやデータの破損、システムの全停止といった致命的なトラブルに直面するリスクが高まります。特に、Accessがオフィスの共有サーバーに置かれ、複数のユーザーが同時にアクセスする環境では、一部のコードを書き換えただけで他の部署の業務に重大な支障をきたす恐れがあります。事前の環境把握は、開発会社が安全に作業を進めるための「防波堤」となるのです。
| 評価項目 | 事前に丁寧な調査を実施した場合 | 調査を行わずに修正を依頼した場合 |
|---|---|---|
| 見積もり費用 | 必要な作業範囲が明確なため、余分なバッファが削られて安価になりやすい。 | 見えないリスク(ブラックボックス)を考慮し、高めのバッファが上乗せされる。 |
| 作業の納期 | 手戻りや想定外のエラーが起きにくく、スケジュール通りに完了する。 | ソース解析の難航や不明な不具合の多発により、作業期間が延びやすい。 |
| システムの安全性 | バックアップや動作環境が把握できているため、データ消失やシステム停止を防げる。 | 現行環境との互換性エラーや、共有データの競合による破損トラブルが起きやすい。 |
このように、事前に自社の状況を把握して伝えることは、外注費用の削減だけでなく、大切なビジネスデータを守り、業務の継続性を担保するために欠かせないプロセスです。
他社へのスムーズな引き継ぎに欠かせない4つの調査項目
他社へAccess VBAの改修を依頼する際、最低限揃えておきたい、あるいは確認しておきたい項目は主に4つあります。これらを整理して提示することで、開発会社とのコミュニケーションが非常にスムーズになります。
1. ファイル構成と格納場所(フロント・バックの分割状況)
まず、対象となるAccessファイルがどのような構成で運用されているかを確認します。Accessの運用形態には、すべてのデータとプログラムが1つのファイル(.accdb や .mdb)に収まっている「単一型」と、データが保管されているテーブル部分(バックエンド)と、画面やVBAコードが格納されている操作部分(フロントエンド)にファイルが分割されている「分割型」があります。また、ファイルが各自のパソコンのローカルフォルダにあるのか、社内のファイルサーバーにあるのかといった物理的な格納場所も重要です。この構成によって、修正時の作業手順や本番環境への反映方法が大きく変わるため、事前に整理しておきましょう。
2. VBAプロジェクトの保護状態(パスワードの有無)
VBAのソースコードを閲覧・編集するために、パスワードによる保護(VBAプロジェクトのロック)がかかっていないかを確認します。過去の開発者がセキュリティ対策としてパスワードを設定したまま退職してしまい、コードが開けないというトラブルは非常に多く見られます。Accessを開き、「Alt + F11」キーを押してVBAの開発画面(VBE)を立ち上げ、コードが表示されるか、パスワード入力を求められるかを確認してください。もしロックされている場合は、当時の担当者へ連絡を取るか、パスワードの解除を専門業者に相談する必要があります。
3. 使用しているAccessのバージョンと動作環境(ビット数)
現在稼働しているMicrosoft Office(Access)のバージョン(Office 2016、2019、Microsoft 365など)と、それが「32ビット版」か「64ビット版」かを確認してください。AccessのVBAでは、OSの機能や外部ライブラリを呼び出すための「API宣言」が含まれていることがあり、これがビット数の違いによって動作しなくなるケースが多発します。近年、PCの買い替えに伴って32ビットから64ビット環境へ移行した際にエラーが発生するトラブルが増えています。利用者のPC環境(Windowsのバージョンも含めて)をリストアップしておくことが推奨されます。
4. 外部システムや他ファイルとの連携状況
Access単体で完結せず、外部のデータソースと連携しているかどうかを把握します。例えば、社内の基幹データベース(SQL Server、Oracle、PostgreSQLなど)にODBC接続してデータを取得している、特定のExcelファイルからマクロでデータを取り込んでいる、あるいはOutlookと連携して自動メール送信を行っている、といった仕組みです。これらの連携部分が存在する場合、Access内のコードを書き換えるだけでは解決しないケースがあり、連携先の設定情報や接続情報の開示が不可欠になります。
自社でできることと開発会社に任せるべきことの切り分け
社内に専門的なIT知識を持つ担当者がいない場合、事前調査や準備をすべて自力で行うのは困難です。無理に自社で完結しようとすると、誤った操作によってデータを破損させてしまう二次被害の危険性もあります。そのため、自社で対応可能な「準備作業」と、プロの技術者に任せるべき「技術的検証」の境界線をあらかじめ明確にしておくことが大切です。
自社で対応すべき「業務の整理と準備」
非エンジニアの担当者でも実施できる、そして実施すべきタスクは「業務プロセスの可視化」と「不具合情報の収集」です。具体的には以下の内容を整理します。
- 現在の業務フロー:該当のAccessを使って、誰が、いつ、どのような業務(データの入力、集計、帳票印刷など)を行っているか。
- トラブルの具体的な再現手順:「どの画面で」「何のボタンを押したときに」「どのようなエラーメッセージが表示されるか」をスクリーンショット付きで記録する。
- テスト用データの準備:実際の顧客情報や機密情報を含まない、開発会社が動作確認に使用するためのサンプルデータを用意する。
- 元ファイルのバックアップ作成:万が一の作業ミスに備え、現在の稼働中ファイルを別フォルダにコピーして厳重に保管しておく。
開発会社へ任せるべき「技術的解析と実作業」
以下のような、ソースコードの内部構造やデータベースの整合性に関わる調査・作業は、最初から信頼できる開発会社に任せるのが安全です。
- プログラム全体の構造解析:VBAコードの依存関係や、古い不要コード(デッドコード)の特定。
- テーブル設計とリレーションシップの検証:データベースとしての設計思想に破綻がないか、インデックスの貼られ方に問題がないかの調査。
- エラーの原因究明と根本的な修正:一時しのぎのパッチ当てではなく、将来的に動作が不安定にならないような堅牢なコードへの書き換え。
- 移行後の動作検証と最適化:修正後のシステムが、実際の運用環境において十分な処理速度と安定性を持って動作するかのテスト。
このように役割を切り分けることで、自社側の負担を最小限に抑えつつ、確実かつ安全に改修プロジェクトを進めることが可能になります。
AccessのVBA修正で発生しやすいトラブル事例と解決ステップ
実際に他社へAccessの修正を依頼した後に、よく発生する代表的なトラブルと、その具体的な解決手順を紹介します。これらを事前に把握しておくことで、トラブルへの予防線を張ることができます。
事例1:修正を依頼したが、プログラムの保護パスワードが不明で作業が中断した
過去の開発者が設定したVBAパスワードが分からず、ファイルを開けてもプログラムの修正が一切できないというトラブルです。
【解決へのステップ】
- 社内・元担当者への確認:過去の引き継ぎ資料や社内サーバーのドキュメント、または当時開発に関わった可能性のある元社員や旧ベンダーへ問い合わせを行います。
- 専門業者へのロック解除相談:技術的な対応を行っている開発会社であれば、セキュリティ規約を遵守した上で、パスワードの解析や解除、あるいはリカバリー作業に対応してくれる場合があります。
- 仕様の再構築(最終手段):どうしても解除できない場合、画面デザインやテーブル構造自体は読み取れることが多いため、それをベースにしてプログラム部分のみを新規で作り直す(再構築する)見積もりを依頼します。
事例2:不具合箇所をピンポイントで直したついでに、別の画面でエラーが発生した
あるボタンの挙動を修正した結果、全く関係のないと思っていた帳票出力やデータ集計の機能が動かなくなる「デグレード(品質低下)」と呼ばれる現象です。Accessはオブジェクト同士(テーブル、クエリ、フォーム、コード)が密結合しているため、このような現象が起こりやすい傾向にあります。
【トラブル回避の手順】
- テストシナリオの作成:修正箇所だけでなく、「システム全体が日常業務に耐えうるか」を確認するための基本操作テスト項目(テストシナリオ)を、自社と開発会社の間で事前に合意しておきます。
- テスト環境(Sandbox)の徹底活用:稼働中の本番システムを直接書き換えるのは厳禁です。必ず本番とは別フォルダにコピーした「検証用環境」を用意し、そこで修正と動作確認を徹底した後に本番移行を行います。
- バージョン管理の実施:「いつ、どのファイルを、どのように書き換えたか」の履歴を残し、万が一の不具合時にはすぐに「修正前の正常なバージョン」に差し戻せるバックアップ体制を敷いておきます。
事例3:修正後にMicrosoft 365の自動更新が入ってシステムが再び停止した
修正を終えてしばらくは正常に動いていたものの、Officeの定期アップデートが適用された直後、突如として特定のVBAマクロが動かなくなるトラブルです。
【恒久的な解決への道筋】
- 推奨互換コードへの書き換え:古いAccess(Excel)で書かれたVBAの一部コードは、最新のOffice環境において非推奨、あるいは廃止対象となることがあります。外注時に「最新のOfficeおよびWindows環境に適合した記述(例:PtrSafe属性の付与など)」への書き換えをあらかじめ要件に含めておきます。
- 保守契約の締結:Microsoft製品の仕様変更は事前予告なく行われることがあります。業務に直結する重要システムの場合、突発的な仕様変更に対応できるよう、月額制のスポット保守やシステム維持契約を開発会社と結んでおくのが安全です。
- 将来的なWeb化や脱Accessの検討:プログラムの老朽化が著しく、アップデートのたびにメンテナンス費用がかさむ場合は、AccessからクラウドデータベースやWebシステムへの移行(システム刷新)ロードマップを専門家とともに描く時期に来ていると言えます。
他社によるAccess VBAの修正に関するよくある質問
VBAのパスワードが紛失して分からない状態でも、他社に修正の見積もりをお願いできますか?
見積もりや初期の状況診断を依頼することは可能です。多くの開発会社では、プログラムのパスワードがロックされている場合、まずファイルの解析から始めます。ロックの解除が技術的に可能な場合もあれば、テーブルデータを抽出し、画面やプログラム部分をリビルド(再構築)する形で提案されることもあります。まずは現状のファイルをそのまま専門業者に見せて、どのような対応方法があるか相談することをおすすめします。
現行システムに関する設計書や仕様書が一切ありません。それでも改修は可能でしょうか?
十分に可能です。実務で稼働しているAccessシステムの多くは、設計書が存在しないか、あっても古い情報で更新が止まっています。技術力のある開発会社であれば、Accessファイルに格納されているテーブル定義、クエリ、そしてVBAコード自体を直接読み解く「リバースエンジニアリング(解析)」という手法を用いて、現状のシステム構造を自ら把握した上で改修を行います。ただし、設計書がある場合と比べて、解析に数日〜数週間の時間がかかる点はあらかじめ考慮しておく必要があります。
Accessの修正を重ねるよりも、これを機にWebシステムに刷新したほうが良いでしょうか?
システムの規模や、同時に使用するユーザー数、および予算によります。利用人数が数人程度で、社内ネットワークのみで使用する場合は、Accessのまま修復・最適化を行う方がコストパフォーマンスに優れています。一方で、「社外やリモートワーク環境からもシステムを使いたい」「同時アクセスが多発してファイルが頻繁に破損する」「今後の事業拡大に伴って機能拡張を予定している」といった場合には、Webシステム(クラウド型データベース)への移行を検討する最適なタイミングと言えます。