none
VB2005または2008で、VB6.0で作ったフォームを埋め込みたい RRS feed

  • 質問

  •  

    VB2005,VB2008でWindowsアプリを開発しています。

     

    VB6.0で作った画面がありまして、
    その画面をVB2005などで作成する画面に埋め込みたいと思っています。

     

    別画面として立ち上げるのであれば
    dllにしてその画面を起動すれば良いのだろうと
    想像できるのですが、
    埋め込む方法が、どうしてもわかりませんでした。

     

    何か方法はございませんでしょうか?
    もしよろしければ、ご教示頂けませんか?

     

    よろしくお願いいたします。

    2008年11月27日 7:25

回答

  •  コンドル さんからの引用

     

    VB2005,VB2008でWindowsアプリを開発しています。

     

    VB6.0で作った画面がありまして、
    その画面をVB2005などで作成する画面に埋め込みたいと思っています。

     

    別画面として立ち上げるのであれば
    dllにしてその画面を起動すれば良いのだろうと
    想像できるのですが、
    埋め込む方法が、どうしてもわかりませんでした。

     

    何か方法はございませんでしょうか?
    もしよろしければ、ご教示頂けませんか?

     

    よろしくお願いいたします。

     

     方法としては、VB6で「ActiveX コントロール」としてプロジェクトを作成して部品を配置して、[ファイル]-[xxxx.ocxの作成]を選択して、ActiveX コントロールのビルドを行います。

    (Vistaの場合、管理者として実行する必要があります)

     

     続いてVB.NETでの作業ですが、ソリューションエクスプローラで[参照設定]-[参照の追加]で[COM]タブをクリックして作成、もしくはインストールしたOCXを追加します。

     

     次にツールボックスの[すべてのWindowsフォーム]や[全般]でマウスの右クリックをして[アイテムの選択]を選択します。

     [ツールボックス アイテムの選択]ウィンドウが開きますので、[COMコンポーネント]から追加したコンポーネントをチェックします。

     すると、ツールボックスにVB6で作成したActiveXコントロールがツールボックスに追加されますので、それをFormに貼り付ければ完了です。

     

     ただしソースコードのメンテナンスをVB6とVB.NETの両方で行うため、余りお勧めは出来ませんが…。

     できれば(後で手直しが必要ですが)アップグレードウィザードによるアップグレードをお勧めします。

    2008年11月27日 14:12
  •  コンドル さんからの引用

    VB6.0で作った画面がありまして、
    その画面をVB2005などで作成する画面に埋め込みたいと思っています。

    「埋め込む」とはどういったイメージでしょうか?

    ちょっと掴みきれませんでした。

     

    別のフォームとして独立して動く?(別exe?)

    別のフォームとしてデータ等を連携させて動く?(連携させるとしたらどの程度か?)

    VB2005/2008のフォームにコントロールとして貼り付ける?

    VB2005/2008のフォームの中にMDI子フォームのように存在させる?

     

     コンドル さんからの引用

    別画面として立ち上げるのであれば
    dllにしてその画面を起動すれば良いのだろうと
    想像できるのですが、
    埋め込む方法が、どうしてもわかりませんでした。

    VB6のフォームを利用するにあたっては、VB2005/2008間のようにDLL参照ではできません。

    実現したいシナリオによって、単純にexeをコールするだけから、ActiveX EXE/ActiveXコントロールといった手法も考えられます。

     

     コンドル さんからの引用

    何か方法はございませんでしょうか?
    もしよろしければ、ご教示頂けませんか?

    今実現したいことを、もう少し説明してもらえないでしょうか?

    どんなことを実現したいのかが分かることで、的確なアドバイスをもらえる確率が高まります。

    今の状態ではいろんな可能性を考えて、いろんな方法が提示されるため、スマートな解決とはいかないかもしれません。

    2008年11月27日 15:01
    モデレータ
  • こんな方法であれこれ悩むよりアップグレード ウィザードでも使ってアップデートして手直しして再テストした方が工数的にも安価で済むという罠。

    2008年11月28日 2:22
  •  コンドル さんからの引用

    埋め込むというのは、
    「VB2005/2008のフォームにコントロールとして貼り付ける」
    ということを指していました。

    これであれば、CatTail様よりご教示頂いた方法で対応可能と考えて
    よろしいですよね?

    ActiveXコントロールとすればどちらでも使えるとは思います。

     

    ただ、VB6の開発環境のサポートはもう切れているので、何らかのタイミングで移行することをお薦めします。

    2008年11月28日 14:20
    モデレータ

すべての返信

  •  コンドル さんからの引用

     

    VB2005,VB2008でWindowsアプリを開発しています。

     

    VB6.0で作った画面がありまして、
    その画面をVB2005などで作成する画面に埋め込みたいと思っています。

     

    別画面として立ち上げるのであれば
    dllにしてその画面を起動すれば良いのだろうと
    想像できるのですが、
    埋め込む方法が、どうしてもわかりませんでした。

     

    何か方法はございませんでしょうか?
    もしよろしければ、ご教示頂けませんか?

     

    よろしくお願いいたします。

     

     方法としては、VB6で「ActiveX コントロール」としてプロジェクトを作成して部品を配置して、[ファイル]-[xxxx.ocxの作成]を選択して、ActiveX コントロールのビルドを行います。

    (Vistaの場合、管理者として実行する必要があります)

     

     続いてVB.NETでの作業ですが、ソリューションエクスプローラで[参照設定]-[参照の追加]で[COM]タブをクリックして作成、もしくはインストールしたOCXを追加します。

     

     次にツールボックスの[すべてのWindowsフォーム]や[全般]でマウスの右クリックをして[アイテムの選択]を選択します。

     [ツールボックス アイテムの選択]ウィンドウが開きますので、[COMコンポーネント]から追加したコンポーネントをチェックします。

     すると、ツールボックスにVB6で作成したActiveXコントロールがツールボックスに追加されますので、それをFormに貼り付ければ完了です。

     

     ただしソースコードのメンテナンスをVB6とVB.NETの両方で行うため、余りお勧めは出来ませんが…。

     できれば(後で手直しが必要ですが)アップグレードウィザードによるアップグレードをお勧めします。

    2008年11月27日 14:12
  •  コンドル さんからの引用

    VB6.0で作った画面がありまして、
    その画面をVB2005などで作成する画面に埋め込みたいと思っています。

    「埋め込む」とはどういったイメージでしょうか?

    ちょっと掴みきれませんでした。

     

    別のフォームとして独立して動く?(別exe?)

    別のフォームとしてデータ等を連携させて動く?(連携させるとしたらどの程度か?)

    VB2005/2008のフォームにコントロールとして貼り付ける?

    VB2005/2008のフォームの中にMDI子フォームのように存在させる?

     

     コンドル さんからの引用

    別画面として立ち上げるのであれば
    dllにしてその画面を起動すれば良いのだろうと
    想像できるのですが、
    埋め込む方法が、どうしてもわかりませんでした。

    VB6のフォームを利用するにあたっては、VB2005/2008間のようにDLL参照ではできません。

    実現したいシナリオによって、単純にexeをコールするだけから、ActiveX EXE/ActiveXコントロールといった手法も考えられます。

     

     コンドル さんからの引用

    何か方法はございませんでしょうか?
    もしよろしければ、ご教示頂けませんか?

    今実現したいことを、もう少し説明してもらえないでしょうか?

    どんなことを実現したいのかが分かることで、的確なアドバイスをもらえる確率が高まります。

    今の状態ではいろんな可能性を考えて、いろんな方法が提示されるため、スマートな解決とはいかないかもしれません。

    2008年11月27日 15:01
    モデレータ
  • こんな方法であれこれ悩むよりアップグレード ウィザードでも使ってアップデートして手直しして再テストした方が工数的にも安価で済むという罠。

    2008年11月28日 2:22
  • CatTail様

    ご回答ありがとうございます。

    コントロールとして作成して、
    設定したいと思っておりましたので
    教えて頂いたActiveXコントロールの作成で実現できそうな気がします。
    まだ試してはおりませんが、希望が開けました。

     

    アップグレードに関しては、VB6.0で作成した画面は
    別プロジェクト(VB6.0)でも使用しておりまして、
    それぞれのプロジェクトで同じものを使いたいという要望がありますので、
    今回はアップグレードはできないのです。

     

    ありがとうございます。

     

    2008年11月28日 3:08
  • Azulean様

     

    ご回答ありがとうございます。

    埋め込むというのは、
    「VB2005/2008のフォームにコントロールとして貼り付ける」
    ということを指していました。

    これであれば、CatTail様よりご教示頂いた方法で対応可能と考えて
    よろしいですよね?

     

    私の質問方法が悪く、回答のしづらいものとなってしまい、
    申し訳ございませんでした。

     

    2008年11月28日 3:08
  • じゃんぬねっと様

     

    ご回答ありがとうございます。

     

    CatTail様への回答にも書きましたが、
    アップデートできない理由があったため、悩んでおりました。
    私の説明が悪くて、申し訳ございませんでした。

     

    2008年11月28日 3:09
  •  コンドル さんからの引用

    埋め込むというのは、
    「VB2005/2008のフォームにコントロールとして貼り付ける」
    ということを指していました。

    これであれば、CatTail様よりご教示頂いた方法で対応可能と考えて
    よろしいですよね?

    ActiveXコントロールとすればどちらでも使えるとは思います。

     

    ただ、VB6の開発環境のサポートはもう切れているので、何らかのタイミングで移行することをお薦めします。

    2008年11月28日 14:20
    モデレータ
  • 私も移行したいと思っておりますので、

    なんとか移行できるよう提案してみようと思います。

     

    ありがとうございます。

     

    2008年11月29日 13:23