はじめに
Visual Studio 2005/2008 にはVB6のプロジェクトをVB.NETに変換する機能 (「アップグレード」と称する) があったが、現在のVisual Studio 2019 にはない。
そこで、VS2008をインストールし、いったんVB6のプロジェクトをVS2008で開いてアップグレードしてから現行のVS2019で開いてアップグレードするという2段階の手順を踏む。VS2008→VS2019に関しては特に大きな問題はない。VB6→VS2008のアップグレードについて次に述べる。
環境の準備
(1) Visual Studio 2008 Expressのインストール
2022年9月現在、すでにVisual Studio 2008 ExpressのダウンロードはMicrosoftのサイトからはできなくなっている。(たぶん)
ただし、Visual Studio サブスクリプションからダウンロードすることができる。無償の「Dev Essentials」に登録すればダウンロードできた。下記ページで「Visual Studio Express 2008」と検索すれば「Visual Studio Express 2008 with Service Pack 1」が見つかる。
(2) VB6またはVB6ランタイムのインストール
アップグレードを実行するPCにはVB6のランタイム(DLLやOCX)がインストールされている必要がある。ランタイムがないと、プロジェクトのアップグレード時にエラーが発生する。
もしもVB6がインストールされていても「MSCOMCTL.OCXが見つからない」などエラーが出る場合にはランタイムのバージョンが古いので最新のものに更新する。下記の更新プログラムをインストールすると MXCOMCTL.OCX および COMCTL32.OCX が更新される。ただし、VB6SP6がインストールされている必要がある。
VB6ラインタイムのみをインストールする場合は、Vectorなどで配布されているものをインストールする。いくつか見つかるが、下記一つ目の XTRM Runtime がおすすめ。
VB6からVB.NETへの変換
- VS2008 (VIsual Basic 2008) を起動する。
- [ファイル]>[プロジェクトを開く] からVB6のプロジェクトファイル(.vbp)を開く。
- [Visual Basic アップグレード ウィザード] が起動してプロジェクトとソースの変換がおこなわれる。
- VS2008を閉じて、変換されたプロジェクトのソリューション(.sln)をVS2019で開く。
- プロジェクトをビルドするとたいてい大量のエラーが出る。
ソースの修正
エラーが出やすいのは主にUI関連である。特に下記の2つは大きく書き直さないといけない。
また、Asなしの変数宣言で型があいまいだと大量の警告コメントがソース中に書きこまれる。変換前のVB6のソースを修正してなるべく適切な型で変数を宣言したほうが良いかも。
詳しくは下記の記事を参照。
参考記事