前回は、ScriptControlコンポーネントを利用して、VBAからJavaScriptのコードを呼び出してみました。しかし、この方法にはいくつかの難点があります。というのも、前回のリスト2などを見てもわかるように、JavaScriptのコードを文字列として記述しなければなりません。クオートが入れ子になっていることから、短いコードであるにも関わらず、著しく可読性を損ねています。また、ScriptControlコンポーネント自体が64ビット環境には未対応で、32ビット環境のOfficeでしか動作しません。

 そこで、ScriptLetsという別の技術も紹介しましょう。ScriptLetsを一言でいうと「スクリプトをコンポーネント化する技術」です。この特集ではBasp21やScripting.FileSystemObjectのようなコンポーネントを利用してきましたが、これらと同じく、VBAから呼び出せるコンポーネントをJavaScriptで用意してしまおうというわけです。ScriptLetsによって、JavaScriptのコードを別ファイルにできますので、コードの可読性も向上しますし、環境も32ビット/64ビットを選びません。

ScriptLetsの基本構文

 例えばリスト1は、前回のリスト2で作成したParseDateTimeプロシージャをScriptLetsで置き換える例です。ファイル名は何でも構いませんが、拡張子は「.wsc」(Windows Script Componentの略)としてください。

リスト1●日付時刻文字列の変換機能をコンポーネント化(Util.wsc)
リスト1●日付時刻文字列の変換機能をコンポーネント化(Util.wsc)
[画像のクリックで拡大表示]