none
VB6からVB2008へのアップグレードについて RRS feed

  • 質問

  • VB6で作成したプロジェクトをVB2008で開こうとすると、アップグレードウィザードが起動しますが、フォームの解析のところから全く動きません。(8時間以上待ってみました)

    知人のVB2008で試していただいたところ、OCXエラーで終了したとのことでした。

    その知人が外部OCXはアップグレードの対象外と言っていましたが、フォームのコントロールのほとんどに外部OCXを使用していて、そのために進まないのかな?などと考えております。

    このような場合、どのような対処をすればスムーズな移行ができますでしょうか?

    2012年10月3日 5:58

回答

  •  Visual Basic 6 は、独自のコンパイラが、Windows OS ネイティブなコードに変換していました。Visual Basic 2005 以降は、Common Runtime Language という共通言語に変換することになります。つまり、基盤となるものが違います。コードを同じような文法で書けるというだけで、まったく別の「開発環境」だと思った方が良いです。そのあたりはあきらめて、手で置き換えていくしかありません。


    Jitta@わんくま同盟

    • 回答としてマーク mackiku 2012年10月5日 0:03
    2012年10月4日 23:47
  • > その知人が外部OCXはアップグレードの対象外

    これは多分.NET用のコンポーネントに置き換えたほうが良いと思いますので、
    単純なコンバートで済む手段はないと思います。

    前に少しだけ関わったプロジェクトでVB6からVB.NET2008に移行するものがありました。
    準備としては共通関数とかをクラスライブラリに置き換えて中身は完全に作り直しました。
    関数名とか役割はなるべく変えないで元になったVB6版に合わせる形でやりました。
    やっぱり前につくったプログラム、仕様を見ながら手で置き換え、SQL文とかそのままでも良い部分は
    部分的にコピペってことになりました。
    業務ロジックとかSQL文とかはド新規ではないので工数的には多少少なかったのかなと思いますが
    完全に新規で作るぐらいのつもりでやった方が良いと思います。
    参考になればと思います。

    • 回答としてマーク mackiku 2012年10月5日 0:39
    2012年10月5日 0:20

すべての返信

  •  Visual Basic 6 は、独自のコンパイラが、Windows OS ネイティブなコードに変換していました。Visual Basic 2005 以降は、Common Runtime Language という共通言語に変換することになります。つまり、基盤となるものが違います。コードを同じような文法で書けるというだけで、まったく別の「開発環境」だと思った方が良いです。そのあたりはあきらめて、手で置き換えていくしかありません。


    Jitta@わんくま同盟

    • 回答としてマーク mackiku 2012年10月5日 0:03
    2012年10月4日 23:47
  • > その知人が外部OCXはアップグレードの対象外

    これは多分.NET用のコンポーネントに置き換えたほうが良いと思いますので、
    単純なコンバートで済む手段はないと思います。

    前に少しだけ関わったプロジェクトでVB6からVB.NET2008に移行するものがありました。
    準備としては共通関数とかをクラスライブラリに置き換えて中身は完全に作り直しました。
    関数名とか役割はなるべく変えないで元になったVB6版に合わせる形でやりました。
    やっぱり前につくったプログラム、仕様を見ながら手で置き換え、SQL文とかそのままでも良い部分は
    部分的にコピペってことになりました。
    業務ロジックとかSQL文とかはド新規ではないので工数的には多少少なかったのかなと思いますが
    完全に新規で作るぐらいのつもりでやった方が良いと思います。
    参考になればと思います。

    • 回答としてマーク mackiku 2012年10月5日 0:39
    2012年10月5日 0:20
  • Jitta様、Mars12様ご回答ありがとうございました。

    もちろん全部移行ツールで済ませようとは思っておりませんでしたが、なにしろ移行ツールも動かない状況でしたので...

    私は、ある会社で社内SEとして勤務しております。(社内SEは一人です)

    販売管理や社員管理、グループウェアなどについて全てVB6.0で自社開発(退社した前任者が開発しました)しており、大変膨大なものとなっております。

    社内サーバーがWindows2000サーバーで、クライアントもWindows2000とXPが半々位になっており、今後のことを踏まえOSのアップグレードを考えておりますが、単純にアップグレードすると今まで開発したものが使えなくなると聞きました。

    その上、予算もそれほど出ないため、自分一人でなんとか出来ることはないかと考えております。

    本題から外れてしまいましたが、何かお気づきのことなどございましたら、お知恵を拝借できればと思います。

    2012年10月5日 4:45
  • > 単純にアップグレードすると今まで開発したものが使えなくなると聞きました。

    お金も人手もないのなら、とりあえず1台新しいOSのマシンを買って、
    今までのが新しいOSで使えるか試してみるのが先かと思います。
    動けばラッキーですが、自作プログラム以外にも問題出るかもしれないので、どのみち予め検証は必要かと思います。
    それをした上でやっぱり使えない、となれば、お金か時間をかけてつくり直すか、
    アップグレードを諦めるかは経営上の判断となると思いますので、
    その人達が判断できる材料を用意することになるかと思います。
    そこまで出来れば一人で悩まなくても良いと思います。

    2012年10月5日 15:18
  • なんとなく不安が…。

    販売管理や社員管理、グループウェアなどについて全てVB6.0で自社開発(退社した前任者が開発しました)しており、大変膨大なものとなっております。

    社内サーバーがWindows2000サーバーで、クライアントもWindows2000とXPが半々位になっており、今後のことを踏まえOSのアップグレードを考えておりますが、単純にアップグレードすると今まで開発したものが使えなくなると聞きました。

    その上、予算もそれほど出ないため、自分一人でなんとか出来ることはないかと考えております。

    .NET への移行はすんなりとは行きません。
    言語構文の変化、使える関数の変化といった言語・フレームワークの変化、利用しているコンポーネントが .NET を非サポートとしているなどの周辺環境の変化などがあり、最悪の場合、新規開発に近い工数を覚悟する必要があると予想します。
    大規模と表現されているシステムを、たとえば半分以上書き直すぐらい、いろいろと触った状態でそのまま実環境に導入するわけにはいきませんよね。互換性がきちんと保たれているか、不具合を埋め込んでいないかを検証しないといけません。
    開発・検証ともにかなり大きな工数がかかると予想されますが、一人で背負いきれないのではと、非常に不安になるような流れです…。

    2012年10月5日 15:25
    モデレータ
  • mars12様、Azulean様、ご回答ありがとうございます。

    とりあえず、開発用のPCを1台購入してもらうことにしました。Windows7上でもVB6での開発が可能なようなので、まずは現行プログラムが動くかどうか試してみたいと思います。

    その上で外注も含め、検討材料を増やしていきたいと思います。

     

    Azulean のアバター

    Azulean

    MVP

    31,415 ポイント 11 4 1
    最近のアチーブメント
    回答候補提供者 I コードの回答者 II 最初のマークされた回答
    2012年10月8日 23:57