目次
やりたいこと
Windows XP時代にVB6で開発されたアプリケーションのカスタマイズを依頼されたとします。今さらXPマシンを起動して開発を進めるのはツラミです。そこで、Windows 11でも開発や将来の保守が容易になるよう、VB6からVB.NETへのコード変換を行います。
環境
| ソフト | バージョン | 入手先 |
|---|---|---|
| Windows11 | 23H2 | – |
| Visual Basic 6.0 SP6 ランタイムライブラリ | 第4版 | Vector |
| Visual Studio 2008 | 9.0.30729.1 SP | web.archive.org(リンクに飛ぶとDLが始まります) |
| Visual Studio 2022Microsoft Visual Studio Community 2022 (64 ビット) | 17.11.0 | 公式サイト |
大きな流れ
- VB6ランタイムインストール
- Visual Basic 2008をインストール
- Visual Basic 2008の機能を使ってVB6からVB.NETへ変換
- (Visual Studio 2022でビルドエラー取り)
手順
VB6ランタイムインストール
VB6ランタイムを入手
Vector から 「vb6sp6rt4.exe」をDLし、実行してください。
この段階でインストールを進めても「エラー 2709 オフライン参加完了情報が見つかりませんでした。」エラーで完了できないため、キャンセルをしてインストールをやめてください。

レジストリ編集
レジストリエディタを起動します。
最終的に以下の構成になるようにレジストリを編集します。
HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindows/
└ Installer/ # キー
+ SecureRepairPolicy # DWORD(32ビット)値 で 2 を指定
└ SecureRepairWhitelist/ # キー
└ {59FEFE3F-8119-457C-A4EE-CF24202DD9D2} # 文字列値 VB6SP6RT4.msiの「改訂番号」を入力
「vb6sp6rt4.exe」を実行した場所に「vb6sp6rt4」フォルダが生成されています。

「VB6SP6RT4.msi」のプロパティを開いて「改訂番号」を確認します。「{}」を含めたこの値をレジストリに登録することになります。

Windows11環境ではこのプロパティ値をコピーすることが出来なかったので手入力しました。コピーは出来ないし「値」列の幅をマウスドラッグして広げないと改訂番号が全て見えないので最初に少しハマりました。
以下、レジストリ設定が完了した後のキャプチャを備忘録として張っています。


VisualStudio2008(VB2008)をインストールする
web.archive.org(リンクに飛ぶとDLが始まります)からVS2008ExpressWithSP1JPNX1504866.isoをDLします。
DLしたisoファイルをマウントしたら VBExpress/autorun.exe を実行し、VB2008をインストールします。
Visual Studio 2008の機能を使ってVB6からVB.NETへ変換
VB2008を起動し、今回の変換対象であるVB6のプロジェクトファイル(.vbp)を開きます。
すると「Visual Basic アップグレード ウィザードへようこそ」というダイアログが表示されます。これはVB6からVB.NETへ変換するためのウィザードですので、指示に従って変換を進めましょう。

私の環境では無事変換が完了し、Visual Studio 2022で開けるようになりました。
しかし、ビルドを実行すると様々なエラーが発生したため、ここからエラー対処のフェーズに突入しました。

