VB6のプロジェクトをVB.NETに変換

はじめに

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」が見つかる。

https://my.visualstudio.com/Downloads

(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つは大きく書き直さないといけない。

  • コントロール配列がVB.NETでは廃止になった
  • PictureBoxの互換性が無い

また、Asなしの変数宣言で型があいまいだと大量の警告コメントがソース中に書きこまれる。変換前のVB6のソースを修正してなるべく適切な型で変数を宣言したほうが良いかも。
詳しくは下記の記事を参照。

参考記事