そのまま保守 Excel VBA・Access・VB6・Perl の保守と延命

VB6アプリがWindowsの新バージョンで動かなくなったときの選択肢

Visual Basic 6.0 / Windows の入れ替え対応

パソコンを入れ替えたら、20年使ってきた在庫管理のソフトが起動しなくなった。画面すら出ない、あるいは起動直後にエラーが出て閉じてしまう。 ——このご相談は非常に多く、そして原因はいくつかのパターンにほぼ収まります。

まず申し上げておきたいのは、 VB6 で作られたアプリは、Windows 11 でも動きます。 Microsoft は VB6 で作られた実行ファイル(.exe)の動作を長期にわたって維持しており、「新しい Windows だから動かない」という単純な話ではありません。動かない原因は、たいていアプリ本体ではなくその周辺にあります。

起動しない原因のパターン

1. 実行に必要な部品(ランタイム)が入っていない

VB6 のアプリは、単体では動きません。動作に必要な共通部品が別に必要です。古いパソコンには何らかの経緯で入っていたものが、新しいパソコンには入っていない、というのが最も多いパターンです。

症状は「起動時に何かのファイルが見つからないというエラーが出る」形で現れます。エラーメッセージに .dll.ocx という拡張子のファイル名が出ていれば、まずこれを疑ってください。

2. 部品はあるが、Windows に登録されていない

1 と似ていますが、対処が違います。古い Windows のアプリは、使う部品をあらかじめ Windows に登録しておく必要があります。ファイルをコピーしただけでは足りません。

前任者が「フォルダごとコピーすれば動く」と言っていたのに動かない場合、たいていはこれです。登録作業は管理者権限で行う必要があります。

3. 32bit と 64bit の食い違い(特にデータベース接続)

これが最も分かりにくく、最も多い原因です。

VB6 のアプリはすべて 32bitです。一方、今の Windows は 64bit です。 64bit の Windows でも 32bit アプリは動きますが、 アプリが使うデータベース接続の設定(ODBC)は、32bit 用と 64bit 用で別々に管理されています。

つまり、コントロールパネルから ODBC の設定画面を開いて設定しても、それは 64bit 用の設定であり、32bit のアプリからは見えません。「設定したのに接続できない」という状況はこれが原因です。

32bit 用の設定画面は、64bit 用とは別の場所にあります(C:\Windows\SysWOW64\odbcad32.exe)。同じ名前のファイルが2か所にあり、しかも 64bit 用の方が System32 という紛らわしい名前のフォルダに入っているため、慣れていないと必ず間違えます。

4. 書き込み権限がない場所で動かそうとしている

古いアプリは、設定ファイルやデータを自分と同じフォルダに書き込む作りになっていることがあります。昔の Windows ではこれが許されていましたが、今の Windows では C:\Program Files 配下への書き込みが制限されています。

症状は「起動はするが、保存しようとするとエラーになる」「設定が保存されない」「前回の状態を覚えていない」といった形で出ます。アプリを C:\Program Files の外(例えば C:\業務システム\)に置くだけで解決することが少なくありません。

5. 古いデータベース部品への依存

Access のファイル(.mdb)を直接読み書きしている VB6 アプリの場合、そのための部品が新しい Windows には標準で入っていません。また、この部品も 32bit 版が必要です。

「作り直す」の前にある選択肢

起動しなくなると「もう寿命だ、作り直すしかない」と判断されがちですが、その前に検討すべき選択肢が複数あります。費用と効果を並べます。

選択肢 内容と向いている状況
新しい環境で動くように整える 上記1〜5の原因を特定して対処する。 費用は最も小さく、多くの場合これで解決します。 まず最初に検討すべき選択肢です。ソースコードが無くても対応できる場合があります。
古いパソコンを1台残す 入れ替え対象から1台だけ外し、専用機として残す。即効性があり費用もかかりませんが、その1台が壊れたら終わりなので恒久策にはなりません。落ち着いて対応するための時間を買う手段です。ネットワークから切り離す運用にすればセキュリティ上の懸念も下げられます。
仮想環境に隔離する 新しいパソコンの中に古い Windows の環境を再現して、その中で動かす。ハードウェアの寿命から切り離せるのが利点です。ただし古い Windows のライセンスが必要で、プリンタや外部機器との連携がある場合は追加の検討が要ります。
部分的に置き換える よく使う機能だけを新しく作り、残りは今のまま使う。全面的な作り直しより費用を抑えられますが、 2つの仕組みが並存する期間の運用設計が必要です。
全面的に作り直す 費用も期間も最大。ただし、業務そのものが変わっていて今のアプリが実態に合っていない場合は、これが正解になります。判断基準は別の記事にまとめています。

ソースコードが残っているかどうかで、できることが変わる

上の表で「新しい環境で動くように整える」は、多くの場合ソースコードが無くても可能です。アプリ本体ではなく周辺環境の問題だからです。

一方で、アプリの中身そのものを直す必要がある場合(例えば、コードの中に古いサーバ名が直接書き込まれている場合)は、ソースコードが必要です。次のような拡張子のファイルが残っていないか探してみてください。

心当たりのある場所としては、開発を依頼した業者から受け取ったCD-R、前任者のパソコンの中、サーバの古いフォルダ、といったところです。 「無い」と決める前に一度探してみる価値はあります。 これがあるかないかで、取れる選択肢の幅が大きく変わります。

まず確認していただきたいこと

ご相談いただく際、次が分かっていると話が早く進みます。分からなくても構いません。一緒に確認します。

特に1番目が重要です。エラーメッセージの文言だけで、原因がかなり絞り込めることがあります。「エラーが出る」ではなく、出ている文字をそのまま記録しておいてください。

起動しない状態のままで構いません

動かなくなったアプリと、残っていればソースコードをお預かりして、原因と取りうる選択肢を報告書にまとめます。初回調査 5万円(税別)、ご発注いただいた場合は改修費から全額差し引きます。

調査を依頼する