Develop Environment


Microsoft Office Solution

 日本ではあまり見かけない(私だけかもしれませんが)Office ベースのアプリケーション開発。VBA (Visual Basic for Applications) で開発できるので、通常の Visual Basic で開発するのとほぼ同じ感覚で開発できる上、帳票作成のしやすさや、高いデータベースコネクティビティ、グラフ作成や OLAP キューブとの組み合わせによるデータ分析など、Visual Basic による開発と比較しても充分なアドバンテージを感じます。

 今回は、そんなオフィスソリューション開発で使う開発環境にフォーカスしてみました。実際のところ、私自身あまりなじみがなかったのと、.NET の登場で、従来の環境との差異が良く解からなかったのでまとめてみたのが本音なんですけどね。

Microsoft Office 2000 Developer

 Visual Studio などの Developer 製品群のひとつのような印象を受けますが、Microsoft Office 2000 Professional / Premium と同系列の製品です。内容は Office 2000 Premium + Visual Source Safe + アルファ、なんですが、この「アルファ」がなかなかです。Visual Source Safe アドインとして作成された VBA のコードライブラリアンや豊富なサンプルコード(このサンプルコードがまたクール)が含まれていて、Visual Studio 製品を持っていると一見不要のようにも思えますが、Office ソリューションを開発するのであれば、絶対に必要な製品です。また、私はあまり興味が湧かないのですが(極度の紙嫌いなので)、紙媒体のマニュアルが付属するので、「オンラインマニュアルも印刷しないと気がすまない」人にはたまらないかもしれません。

→Office 2000 Developer ホーム

Microsoft Office XP Developer

 Office 製品が 2000 から XP にバージョンアップしたことによるバージョンアップです。中身は 2000 Developer とほとんど変わりませんが、開発ターゲットが Office XP の場合には、こちらを選択すると良いでしょう。

→Office XP Developer ホーム

Visual Studio Tools for Office

 Visual Studio .NET 2003 で、Office 2003 ソリューションの開発を行うための環境。Office 2003 から、.NET ベースになったため、リリース形態が変更されたようです。

Visual Studio Tools for Office 製品情報

 Microsoft Office ソリューションを開発するには、現状、最もリッチな環境と思われます。IntelliSense が使いたいがために、この選択を考えましたが、私の開発ターゲットは Office 2000 でした。う〜ん残念。

2 種類の Visual Basic 6.0

 Excel などから、[ツール]→[マクロ]→[Visual Basic Editor] で開く例のアレです。ためしにバージョン情報を開いてみると、

 「Microsoft Visual Basic 6.0」と書いてあります。あれ? VB 6.0 が起動しているのか?と思い VB 6.0 を開き、バージョン情報を表示してみると、

 このとおり…ぜんぜん違います。見た目にややショボイ感じのする上の方が Version が大きいのも、結構謎です。ちなみに上のエディタのアップデートは Office のアップデータでアップデートされます。違うプロダクトであることは明白なのですが。

 そこで調べてみました。下の VB 6.0 は Visual Studio の VB が動いているのは明白です。では Excel から起動される 上の VB 6.0 は一体どこにあるのでしょうか?もし解って入れ替えられれば、VBA の編集で IntelliSense が使えるかもしれません。

 Visual Studio ツールの Spy++ で ウィンドウの PID を調べて、さらに Process Viewer でPID に該当するアプリケーションを探してみると…あれ? Excel だ…

 上の Visual Basic 6.0 は、Excel の内部ルーチンだったんですねぇ。ちなみに Word から開いてみると全く同じバージョンが表示されるので、インプロセスで動く何か(DLL やら、それらしきもの)で出来ているってことですね。少しびっくりしましたが、まぁ仕様ってことで。