Windows XP Server Pack 2(SP2)は遅くとも今秋には出荷されるようです(参照記事)。そこで今回からは,前回紹介したSP2評価ツールとMicrosoft Excelを連携し,評価ツールの機能強化を試みます。

Excelを起動するサンプル・プログラム

図1●サンプル・プログラムの実行結果(Excelがインストールされている場合)
図2●サンプル・プログラムの実行結果(Excelがインストールされていない場合)
 Excelへの接続機能を持つサンプル・プログラムの説明は後にし,まずは今回用意したサンプル・プログラムをこちらからダウンロードし,試してください。筆者の環境では図1のような情報が返されます。皆さんの環境にExcelがインストールされていない場合は,図2のような情報が返されると思います。

 今回は,Excelを初めて使用することもあり,このような単純な情報を表示し,Excelに接続できることを証明するにとどめています。次回からは,Excel上にSP2情報を表示していきます。

サンプル・プログラムを作るための知識の収集

 事前に申し上げておきたいことが1つあります。2004年7月6日現在,筆者はMicrosfot Excel(Excel)に関しては,初心者ユーザーの立場であるということです。過去に1,2度Excelを使用した経験はあるのですが,本格的に利用し始めたのはこの1週間ほどです。Excelを一切知らない筆者は,基礎知識を求めて次のような行動に出ました。

 まず,マイクロソフト日本法人のこちらのサイトを訪問し,Excelが公開するオブジェクトを調べました。多数のオブジェクトを時間をかけて学ぶ覚悟はしていたのですが,意外なことに,そのサイトは,次の4つのオブジェクトを紹介しているにすぎませんでした。

  • Excel Applicationオブジェクト
  • Excel Workbookオブジェクト
  • Excel Worksheetオブジェクト
  • Excel Rangeオブジェクト

 ベテランExcelユーザから見れば,「君の考えは甘い」ということになるでしょうが,筆者の気が軽くなったのは間違いないことでした。こちらのサイトは,多数のサンプル・コードを公開しています。しかし,すべてのサンプルは.NET言語で記述されています。

 筆者はあくまでも簡易言語であるVBScriptを使用したいと考えていましたから,VBScriptのサイトを訪問し,適当なサンプル・コードが公開されていないかどうかを調べました。筆者は最終的に,次のようなサンプル・コードを見つけ出しました。

Dim ExcelSheet
Set ExcelSheet = CreateObject("Excel.Sheet")

図3●Excelのオブジェクトにアクセスするために必要な情報
 このコードを初めて見たとき,「これは,Excel Worksheetオブジェクトを利用するためのサンプルに違いない」,と思いました。この推測が正しいものなら,技術的な詳しい背景説明は割愛いたしますが,残りのオブジェクトにアクセスするために必要な情報もレジストリに格納されているはずです。レジストリを調べてみると,図3[拡大表示]のような情報がありました。

 この情報を見つけ出したとき,筆者は「これでこれまでの経験から,Excelを自分なりに使える」と自信を持ちました。詳しい理由は今後の連載で詳しく紹介していく予定です。ちなみに,この「Excel.Application」オブジェクトは,次のように解釈できます。

「Excel.Applicationオブジェクトは,Excelという名前空間に含まれるApplicationオブジェクトのことである。Applicationオブジェクトというのは,通常,所属名前空間のルート・オブジェクトに付けられる名前であることが多い。このため,ルートオブジェクトが分かれば,Excel.Sheetオブジェクトなどの他の下位オブジェクトにアクセスし,多数の公開機能を操作できるようになる」。

その他の機能変更

 前回はSP2NameSpacesという名前のクラスを作成し,プログラムの保守性や拡張性を向上させていました。今回は,SP2NameSpacesクラスを直接拡張するのではなく,次のように新しいクラスを作り,その中にSP2NameSpacesクラスを含めるようにしました。

Class New31WithExcel
Private oOld
Private oAppX

Private Sub Class_Initialize
Set oOld = New SP2NameSpaces
Set oAppX = CreateObject("Excel.Application")
End Sub

Public Property Get getOldClass()

 Set getOldClass = oOld
End Property

Public Property Get getExcelNameSpace()

 Set getExcelNameSpace = oAppX
End Property

Private Sub Class_Terminate
Set oOld = Nothing
Set oAppX = Nothing
End Sub

End Class

 このNew31WithExcelクラスは,ソースコードを見ると分かるように,最初に実行されるClass_Initializeサブルーチン内で既存クラスSP2NameSpacesのインスタンスを作成しています。結論を急げば,新しいNew31WithExcelクラス内部に既存クラスSP2NameSpacesを含めたことにより,従来のメイン・ルーチン部分をそのまま生かすことができました。興味のある方はソースコードをダウンロードし,ご自分の目で確認してください。

 Excelを日々使用しながら研究してみると,膨大な数の機能が用意されていることが分かります。しかも,それらの機能は比較的簡単に使えそうな印象を受けます。今後の連載では,クラスを拡張しながら,Excel機能もどんどん紹介したいと思います。Excelを使用したいがそれを学習する時間がない,と悩んでいる方は,ぜひ,これからの連載をお読みください。

今回のまとめ

  • SP2正式版が今秋にもリリースされる
  • 2つの独立したクラスは関連付けて使用することができる
  • Excelへの接続は簡単である
  • Excelは豊富な機能を提供している

 今回は以上で終了です。次回またお会いいたしましょう。ごきげんよう!