トップ回答者
エクセル VB から VB6 への移植に付いて

質問
回答
-
>私はデザイナで開発した事が無いのでこれがなんなのか?わかりません。
「デザイナ」とは、
VB6フォーム以外の「GUI開発」をVBIDE内で実現するための拡張機能です。
メニューの
「プロジェクト」⇒「コンポーネント」⇒「デザイナ」タブ
に進むと、追加可能なデザイナの種類が一覧出来ます。
VBAのフォームである「MicrosoftForms2.0」と
ADOのデータコネクションデザイナの「DataEvironment」辺りが
メジャーどころだと思います。
ExcelVBAのフォームは「MicrosoftForms2.0」に当たりますが
基本的には「VB6のフォームとあらゆる面で互換性がない、別物」
という以外は、「デザイナ=フォーム」と考えてしまって問題ないと思います。
>コード等はなんとか力技でするとしても
>フォームの移植方法が思いつきません。
フォーム自体のイベントや、ListBoxなど基本コントロールのプロパティ、イベントに
幾つかの違いがあるので、それらを理解して
一つ一つVB6上でフォームを作り直すのが一番の正攻法です。
手間は掛かりますが、可能な限りこの方法をお勧めします。
ですが、「幾つかの違い」が、非常にやっかいになることがあり
イベント発生のルールが違ったり、プロパティーの有無が違ったりなどで
VBAでの実装によっては「移植不可能」なケースもありえます。
例:
・リストボックスで、マウス押下のまま選択位置を変更した時に
Clickイベントが発生する⇒VBA
MouseUpまでClickイベントが発生しない⇒VB6
・コンボボタンにFocusした際にIMEが
自動的に無効になる⇒VBA
無効にならない⇒VB6
などなど。
お客様の依頼内容によりますが、「デザイナ」のまま
開発を続ける方が、メリットが大きい場合も多いと思います。
(経験上、どっちもどっちですが)
その際、「デザイナ」について気をつける点は以下の2点です
(他にもあったら、どなたか補足お願いします)
①「デザイナ」のフォームは「FM20.dll」という「Microsoft Forms 2.0 library」を参照しますが
このDLLはOfficeアプリケーションに同梱されるもので、「再頒布権」は、VB6開発者にありません。
配布の際に同梱しないよう、気をつける必要があります。
②VB6備え付けの「ツールボックス」からは、ボタンやラベルといったコントロールを追加出来ません。
デザイナのフォームの右クリックメニューから「ツールボックス...」をクリックすると
専用のツールボックスが開かれます。こちらからコントロールを追加します。
VB6専用の幾つかのコントロールは使用出来ません(Timerコントロールなど)
VB6の「メニューエディタ」も使えません
ご参考になれば幸いです。
すべての返信
-
>私はデザイナで開発した事が無いのでこれがなんなのか?わかりません。
「デザイナ」とは、
VB6フォーム以外の「GUI開発」をVBIDE内で実現するための拡張機能です。
メニューの
「プロジェクト」⇒「コンポーネント」⇒「デザイナ」タブ
に進むと、追加可能なデザイナの種類が一覧出来ます。
VBAのフォームである「MicrosoftForms2.0」と
ADOのデータコネクションデザイナの「DataEvironment」辺りが
メジャーどころだと思います。
ExcelVBAのフォームは「MicrosoftForms2.0」に当たりますが
基本的には「VB6のフォームとあらゆる面で互換性がない、別物」
という以外は、「デザイナ=フォーム」と考えてしまって問題ないと思います。
>コード等はなんとか力技でするとしても
>フォームの移植方法が思いつきません。
フォーム自体のイベントや、ListBoxなど基本コントロールのプロパティ、イベントに
幾つかの違いがあるので、それらを理解して
一つ一つVB6上でフォームを作り直すのが一番の正攻法です。
手間は掛かりますが、可能な限りこの方法をお勧めします。
ですが、「幾つかの違い」が、非常にやっかいになることがあり
イベント発生のルールが違ったり、プロパティーの有無が違ったりなどで
VBAでの実装によっては「移植不可能」なケースもありえます。
例:
・リストボックスで、マウス押下のまま選択位置を変更した時に
Clickイベントが発生する⇒VBA
MouseUpまでClickイベントが発生しない⇒VB6
・コンボボタンにFocusした際にIMEが
自動的に無効になる⇒VBA
無効にならない⇒VB6
などなど。
お客様の依頼内容によりますが、「デザイナ」のまま
開発を続ける方が、メリットが大きい場合も多いと思います。
(経験上、どっちもどっちですが)
その際、「デザイナ」について気をつける点は以下の2点です
(他にもあったら、どなたか補足お願いします)
①「デザイナ」のフォームは「FM20.dll」という「Microsoft Forms 2.0 library」を参照しますが
このDLLはOfficeアプリケーションに同梱されるもので、「再頒布権」は、VB6開発者にありません。
配布の際に同梱しないよう、気をつける必要があります。
②VB6備え付けの「ツールボックス」からは、ボタンやラベルといったコントロールを追加出来ません。
デザイナのフォームの右クリックメニューから「ツールボックス...」をクリックすると
専用のツールボックスが開かれます。こちらからコントロールを追加します。
VB6専用の幾つかのコントロールは使用出来ません(Timerコントロールなど)
VB6の「メニューエディタ」も使えません
ご参考になれば幸いです。