Visual Studio 2008用にVbソースを変換するには?

解決


暗中模索  2011-06-13 12:10:50  No: 102957  IP: [192.*.*.*]

VB5.0開発ツールで作成したVbソースを上位ツール(Visual Studio 2008)のVbソースに変換するには?

Visual Studio 2008附属機能のコンバートをしても変換エラーが多過ぎ使用に
たえません。GbGirid32.ocx,Dblist32.ocxなどActivXコンポーネント部分は変換エラーとなります。過去15年間に開発されたプログラムは膨大なため、再作成や変換エラー部分の修正では対応出来ず困っています。

VB5.0ソースをVB6.0にコンバート後にVisual Studio 2008のVBソースに変換すればもう少しましですか(VB6.0開発ツールはまだ購入できるのですか?)

編集 削除
魔界の仮面弁士  2011-06-13 17:59:27  No: 102958  IP: [192.*.*.*]

> GbGirid32.ocx
DbGrid32.ocx の事でしょうか。


> ActivXコンポーネント部分は変換エラーとなります。
RichTextBox のように、Microsoft 製の ActiveX コントロールは
問題が出にくいのですが、Grid、DBGrid、DataGrid 等のように、
サードパーティからの OEM な物に関しては厳しい所ですね。

http://www.microsoft.com/japan/msdn/vstudio/vbrun/


> VB5.0ソースをVB6.0にコンバート後に
VB4 → VB5 などと比べると、VB5 → VB6 への互換性はかなり高いです。
VB5 製コードは多くの場合、ほぼそのまま VB6 環境でもコンパイルできます。

これはすなわち、元のソースが VB5 当時の技術で書かれた物である限り、
それがたとえ VB6 製のソースであったとしても、変換結果には
ほとんど差異が無いということを意味します。

特に、ActiveX コンポーネントの移行に際しては、
  ・ActiveX を使い続けて構築する。
  ・代替コンポーネントに置き換える。
という選択肢になります。しかも、今まで Data コントロールを
使っていた部分に関しては移植されません。


> 変換すればもう少しましですか
以下、マイグレーションセンターより抜粋引用。
http://msdn.microsoft.com/ja-jp/library/dd297699.aspx

|
| データコントロールはアップグレードされずに
| エラーを表わす 「赤い色のラベル」 に変更されます
|
| RDO データコントロールはラッパークラスが生成されますが、
| コントロールへのデータのバインディングはできません。
|
| ADO データコントロールは Visual Basic 6.0 の
| 互換機能として提供される ADODC に置き換えられます。
| また、バインドしていたコントロール
| (データグリッドやデータリストコントロールなど) を
| 利用している場合は、それらのためのラッパークラスが追加されます。
|
| Visual Basic 6.0 では ADO を利用して ADO に親しんでおき、
| .NET になったら、ADO.NET を利用することをお勧めします。
|

ということで、DataGrid 等とバインドしていた「データコントロール」は
NG ですが、VB6 の ADOデータコントロールや ADODB は変換対象となるため、
もしも VB6 を中継させて移行させるというのであれば、
    VB5 DBGrid
  →VB6 DBGrid
  →VB6 DataGrid
  →VB.NET AxDataGrid
(→VB.NET DataGrid)
といった移行形態を採ることで、移行ツールの精度を上げることができます。

とはいえ、DBGrid から DataGrid への(VB6 上での)移行作業も、
それなりに手間がかかる行為です(ADO.NET 化よりは楽ですが)。
それに、パフォーマンス面の問題もありますから、基本的には
直接 VB2008 でリメイクした方が効率が良いでしょう。



> VB6.0開発ツールはまだ購入できるのですか?
限定条件付きですが、一応可能です。

出荷終了のため単体購入はできませんが、お持ちの VB2008 が
Visual Studio with MSDN Subscription シリーズである場合には、
MSDN Subscription 経由で VB6 を無償入手できます。
http://www.microsoft.com/japan/msdn/vstudio/2008/purchase/default.aspx

上記ライセンスを持っているけれども、VB6 を入手しないまま契約期限が
切れてしまっていたり、あるいは、所有しているのが上記以外のエディションで
あったという場合には、MSDN Subscription を単体購入する事で
・Visual Basic 6.0 Enterprise Edition 日本語版
・Visual Basic 6.0 Enterprise Edition 英語版
をはじめとして、
・Visual Basic 4.0A 英語版
・Visual Basic 3.0 Professional 英語版
・Visual Basic 2.0 Professional 英語版
・Visual Basic 2.0 Professional 日本語版
・Visual Basic 2.0 Standard & Visual Control Pack 日本語版
・QuickBasic 4.5 英語版
といった古い開発ツール群、および、最新の VS2010 が手に入ります。
http://msdn.microsoft.com/ja-jp/subscriptions/dd218004.aspx

なお、MSDN Subscription の上位エディションであれば、
こうした開発ツール群に加え、Office や SQL Server 等も
入手できますが、中には、開発ツールが付かないエディションも
ありますので、購入する場合にはご注意ください。


また、MSDN Subscription 以外の選択肢としては、現在 VB6 を
持っている人から譲り受けるという選択肢もあります。ただし、
下記のような譲渡制限が付いているため、オークション等を
介する事が出来ず、入手難易度は高くなってしまうかと思われます。

・マニュアルや契約書の類を含むパッケージ一式が譲渡されねばならない。
・所有者の変更は一度のみ(再譲渡はできない。譲渡権は最初のユーザーのみ)
・譲渡に伴って、金銭のやりとりがあってはならない(無償の譲渡に限る)。
・仲介人を介する譲渡は認められていない。


それと、もしも VB6 を購入するのであれば、VirtualPC でも
構いませんので、VB6 用に専用の PC を用意するようにしてください。
これは、VB5 と VB6 とでは、開発環境の共存がサポートされないためです。

編集 削除
暗中模索  2011-06-17 15:06:47  No: 102959  IP: [192.*.*.*]

魔界の仮面弁士様 ご回答大変ありがとう御座いました。
貴重な助言を何度もじっくり読ませて頂きました。

やはり、DBGridなどデータ連結オブジェクトを使用しているコントロールは移植困難という事ですね。

これから、どの様に対処したらよいか、助言を参考にじっくり検討します。

そもそも事の始まりは、VB5.0ツールのセットアップウィザードで作成したプログラムがWindows7でインストール不能(Dll不一致)となる事でした。
もちろんVB5.0ツール自体もWindows7で正常には動作しません。

そこでVisual Studio 2008を購入しまして、VB5.0のプログラムソースを移植しバージョンアップで対処しようと思いましたが、移植不能となりました。

生産管理・原価管理・名簿整理など多数のシステムがあり、Frame単位のプログラムは500本を超えるため、再作成・再テストは時間や経費を考えると不可能です。まして、1、2年かけてVisual Studio 2008で再作成しても、マイクロソフトが何年か後に、今回のように大きくインターフェースを変える可能性がある限り、Windowsでは怖くてやる気がしません。

とりあえず、VB5.0で既存システムはメンテナンスし、新規システムはVisual Studio 2008で開発しようと思います。

現在WindowsXpは販売されなくなリましたので(Win7からXpへのグレードダウンの版権はまだ可能だそうですが)Windows7のVirtual WindowsXpモードで既存のプログラムを動作させようと思います。

ただしVirtual WindowsXpモードは起動に時間が掛かる上に、処理速度が遅いので悲しいです。
今はWin7からXpへのグレードダウンが長く続けられる事を祈るのみです。

編集 削除