Windows の GUI 環境の中でアプリケーションの連携をしたい。こんな目的でWSHに挑戦してみる。具体的なアプリケーションはEXCEL。
上のコードでは、CドライブのルートにExcel-Test.XLSというファイルを保存する。 不都合があれば、例えばC:¥¥temp¥¥Test.XLSのように適宜変更する。ほんとうは、¥¥でなくて¥なのだが” ”の中では¥は特殊な意味になるので¥¥とする。これはルールです。他に疑問があれば解決しましょう。納得できないことはしてはいけません。 さて、ダブルクリックします。Cells(1,1)に「ここは、A1」と記入されたExcelが開き ました。僕はEXCEL97を使っています。 どうして、ダブルクリックでExcelが開いたのでしょう。 Windows98から導入されたWindows Script Hostの仕組みがあったからです。実体はC:\WINDOWSにあるwscript.exeです。「メモ帳」で作ったファイルの拡張子がJSだったのでwscript.exeに渡され、C:\WINDOWS\SYSTEMのwshom.ocx、jscript.dllを利用してスクリプトが実行されました。 |
スクリプト自体はJScriptリファレンスのActiveXObjectのページに記載されているものです。原本で確認して下さい。 1行目、変数ExcelSheetの宣言 2行目、Application オブジェクトとしてExcel生成 3行目、Sheet オブジェクトをExcelSheetに割り当てる 4行目、Application オブジェクトを使って Excel を表示 5行目、シートの先頭のセルに文字を入力 6行目、ファイルを保存 7行目、Application オブジェクトの Quit メソッドで Excel を終了 8行目、オブジェクト変数を解放 でも、このままでは一瞬Excel が開いたようですが、閉じてしまいました。 スクリプトは作業が終れば、すべてを終了させるようです。6行と7行の間に WScript.Echo("OK?"); として確認できるようにしました。 |
Excel97はActiveXObject対応です。Windows98でMicrosoftは従来のOLEコントロールをインターネット対応のActiveXコントロールとしました。 WindowsOSは アプリケーションに対して基本機能をAPIとして提供する構造です。それと引換えに、アプリケーションは直接ハードウエアにアクセスしないのがルールです。この構造は、アプリケーションが共通部品から構成されている事を意味し、アプリケーション間の連携が容易なことは想像できます。 Windows 95のリリースを成功させると即刻、Microsoftはインターネットを戦略の前面に掲げ Windows 98でOLEをActiveXコントロール (コンポーネント) に模様変えしました。インターネットのブラウザは当然ActiveXコントロールから組みたてられています。 クリップボード経由のアプリケーション間の文書貼り付け、図形貼り付けといったデータ連携は、ActiveXコントロールで外部から直接アプリケーションをコントロールできることになった訳です。 ActiveXコントロールの本質はCOM(Componet Object Model)と呼ばれるアプリケーション間通信です。Windows Script Host は、その過程でEXCELをCOM化します。自分自身もCOM対応です。だからコントロールが出来るのです。ActiveXObject ( "Excel.Application" ) これがCOM化の手続きでした。
|
ActiveXコントロール部品を利用するには、スクリプトに名前とタイプを書く必要があります。Excel97にはVisual Basic for Applications(VBA)が搭載されています。このVBAにオブジェクトブラウザがあります。利用したい部品情報が得られます。
例えば、ファイル選択ダイアログをここに組み込んでみます。あなたのPCのファイルツリーが表示されると思います。保存機能はオフにしてあります。 ただし、Excel97がインストールされたユーザでPCにEXCEL8.OLBにあればですが。 まとめてみます。JScriptで書かれたコードのファイルをダブルクリックでスクリプトが自動実行されました。WSHの機能を利用しました。一方、ファイル選択ダイアログはページに張ったボタンをクリックでスクリプトが自動実行されました。 EXCELをコントロールしたり、その部品を利用することに限定したら、WSHの機能はいりません。コードのソースを点検するとわかりますが、JScript(JavaScript)の機能のみで動作しています。これは、何を意味するのでしょう。動く楽しいホームページのスキルでアプリケーションが作れるという事です。いつも見ているブラウザがアプリケーションのプラットホームということになりませんか。 |