HTAアプリケーションは、実体が単なるHTMLなので、必要知識で事が足り、また柔軟に処理を作り込むことができます。そのため、作業ツールをパパッと作るのに非常に向いています。
実際、単純な業務を自動化する目的で使用することが多いと思います。さらに言うと、業務内のツールですので、Excelのデータを読み込んで、加工してファイル等にアウトプットするようなものが多いと思います。
HTAからExcelにアクセスするには、ActiveXObjectを生成して、そのオブジェクト経由でという形が普通です。ですがこの方法では、読むセル数が大量にある場合、使い物にならないくらいに遅くなります。例えば、数万行のデータを1セル1セル読み込んで、加工データを作成するような場合、処理時間は、数十分、数時間というレベルになってきます。
ほとんどの時間は、セルデータ読み込みに使われています。
わたしは次の方法で、ActiveX経由でセルを読み込まないようにし、通常数十分かかる処理を数秒から数十秒程度で済ませられるようにしています。
- ActiveXでファイル読み込み
- 各シートをタブ区切りで保存
- 保存したファイルを読み込み
- 改行コードでsplit
- splitされた各要素をタブでsplit
あとは、全てjavascriptの配列アクセスだけで処理できます。
サンプルをgistにあげました。
https://gist.github.com/kenmazsyma/610c7fc1c92180579bc8c8924615f447