まず、お断りしておく。
私に開発ツールをシビアにレビューする能力などは全くない。根本的に基礎知識が決定的に不足しているからだ。
私が知りたかったのは純粋に、VB2008Express(以下Expressと略す)でVB6コードのコンバートが可能なのか、といった一点に尽きる。
各サイトを見ても、どのサイトもNETでVB6プロジェクトを指定するとウィザードが開くと書いてあるだけで、NETがVBxxxxのどのバージョンを意味するのか、そのVBxxxxのどのランクの製品をさすのか、まったく雲をつかむような記事ばかりだったからだ。
いろいろなサイトで同じように取り上げられているので、おそらくVB2008でもVB6コードのコンバートが可能なのだろうと大まかに予想はできたが、無料提供されているExpressでウィザードが起動するのか否かという点では、検索をかけても1件もヒットしなかった。
これは自分で試してみるしかない。Expressの最初の提供アナウンスからかなりたった最近になって、「仕方ないから自分でやってみるか」という気にようやくなった。
結論、ExpressでVB6プロジェクトはコンバートされる。
だが、私のインストールした環境では、プロジェクトファイルをダブルクリックしたときにはウィザードは起動しなかった。
バックグラウンドで、バージョンセレクタというものが動いており、おそらくこれがプロジェクトファイルのバージョンをチェックしていると思われるが、どうらや正常に動かなかったようだ。
私の場合はVBE(VBのエディタ)が立ち上がってから、「プロジェクトを開く」でウィザードを起動できた。
ただしこのウィザード、よほど簡単なプロジェクト−テキストボックスとボタンだけといったような−物でもない限り、コンバートされたものがそのまま動くことはないようだ。
これには、理由がある。
VB6で提供されていたコンポーネント(コントロール)の上位互換のコンポーネントが、すべて提供されているというわけではないようなのだ。
たとえば、全く名前や機能の違うコンポーネントになっていたり、異なるコンポーネントが統合されていたりして、それらはVB6からはコンバートしてくれない。
つまりExpressのウィザードは、VB6の一部のコンポーネントを変換できない。APIのコールをしているものも、「内容をよく確認しろ」と警告が出る。
私の場合(この体験的コンバートは1回しか行っていないが)、テストにごく単純なプロジェクトを指定したにもかかわらず、コンバートできなかった。
その中身とは、
・テキストボックス
・コマンドボタン
・オプションボタン
・ラベル
・アップダウン
・API
という構成であったが、アップダウンとAPIでつまづいた。
どうらやら、アップダウンやスピンといったコントロールは廃止され、ニューメリックアップダウンというコントロールに変更されているようなのだが、これにVB6のアップダウンはコンバートされないようだ(スピンがコンバートされるか否かについては確認していない)。
ニューメリックアップダウンは、ラベルとアップダウンを組み合わせたような新しいコントロールで、表示動作を組み込まなくてもいいように作り直されたものであるらしい。
だがこのコントロール、ボタンサイズの変更が不可能なのだ。VB6のアップダウンはボタンサイズを変更できるのが大きな特徴だったのだが、ニューメリックアップダウンのボタンの大きさは使用しているフォントの大きさで決定されるものらしく、私はこの点で、2時間あちこち調べまわったが、結局変更できないという結論にたどり着いた。
VB6のアップダウンコントロールは、なんとラベルに変換される。そして、Valueプロパティがないと警告されるのだ。そりゃそうだ。Valueプロパティを持つラベルコントロールなんて聞いたことがない。
新しい製品を使って、いきなり「ほしいコントロールは自分で作れ」といわれているような気がして、私は一発で挫折した。
「こいつを使って、何かを作ろうという気にはなれん!」 私の心は決まった。
VBもNET対応になって、これまで使えなかったさまざまなプロパティやメソッドが自由に設定できてカスタムドローやサブクラスの使用頻度が大幅に減ると思っていた私の期待は大きく裏切られた。
たったひとつコントロールが動くなくなっただけとはいえ、これまで自由に使えていたプロパティさえも使えなくなる。これでは改良ではなくて改悪ではないか。
いくつのコントロールがExpressでサポートされていないのか確認できていないが、私はマイクロソフト社のデバッグ担当ではない。いちいち確認する気にはまったくなれない。
まあ噂では、あの評判の悪い、ツリービューやリストビューの反転表示は自動表示がなくなり、オーナードローで好きなように表示するように変更されたようではあるが。
Expressでサポートされていない機能も、ほかの上位製品ではサポートされていることは十二分に考えられる。だが、自由に試せる環境はExpressしかない状況で、どうやって試せというのか。
考えるまでもなく、私なら過去のノウハウを利用できるVB6の方を利用する。
一方、マイクロソフトはVB2003などのレガシーNETを切り捨て、VB6の方を生かす選択をしたようだ。
私の中途半端な知識ではどうにも判断できかねるが、VB6が切り捨てられたりしたら、おそらくエクセルなどのVBAはすべて動かなくなる。
そんなことをしたら、世界経済は一瞬で停滞し、マイクロソフト本社は一夜にして火の海になることだろう。
新しい製品が前の製品よりも性能的に劣るということは、あってはならないことなのだ。人は、一度進歩した世界から元の世界に戻ることはできないのだから。
マイクロスソフト社には、VB6やVBAコードを完全にNETコードに変換できて手入力による修正などしなくとも動く、VB6コードでもNETコードでも両方がサポートされた(動かせる)、完全上位互換のNET対応VBを早期に望みたい。
|