« 【よみもの】「うしくんと話そう」 第12回 うしくんの名前の巻き | メイン | 【講座】HSPよく使うフレーズ 第17回 中央に表示する »

2006年10月25日

【講座】HSP3ワンポイントテクニック 第11回

このコーナーでは、HSP3の変わった使用例や、気がつきにくい機能など
を紹介していきたいと思います。

今回は、実務向けにHSP3を使った例として、今回はMicrosoft Excelとの
連携を取り上げてみます。

言うまでもなく、Excelは仕事にも定番で使われている表計算ソフト
ですが、ここで作成したデータをHSPから取り出す方法について
紹介していきましょう。

Excelのデータを取り出す方法としては、一度cvs形式などテキスト
ファイルとして扱えるデータファイルで出力する方法なども
ありますが、今回はHSP3が持つCOM呼び出しを利用して直接xls
ファイルにアクセスしてデータを取り出してみます。

newcom命令で、ExcelのプログラムIDである"Excel.Application"を
指定することで、各種機能を利用できるようになります。

細かい部分は、VBScript等でアクセスする手順と同じなので、
ここでは省略しますが、指定されたファイルを開き、データのある
項目数を取得して自動的に全データを取り出しています。

COMの内部では、文字コードとしてUnicode形式が使用されていますが、
HSPで扱う場合には自動的にSJIS形式に変換されています。

これにより、xlsファイルに含まれるデータをもとに変換を
行なったり、HSP上でデータを取り込んで使用することが手軽に
できるようになります。

以下のサンプルは、カレントディレクトリにある「test.xls」
というファイルの内容を表示するものです。

;
; xlsのデータを取得する
;
myname = "test.xls"
fname = dir_cur+"\\"+myname ; フルパスを作成する
;
newcom xlApp, "Excel.Application"
xlApp("Visible") = 0; Excelウィンドウは非表示
xlApp("DisplayAlerts") = 0; 警告メッセージを表示させない
xlBooks = xlApp("Workbooks") ; Workbooks コレクション取得
xlBooks->"Open" fname ; 指定ファイルを開く
xlBook = xlBooks("Item",myname) ; book取得
xlSheet = xlBook("Worksheets","Sheet1") ; Sheet取得
xlRange = xlSheet("Range","A1")
xlCurReg = xlRange("CurrentRegion")
xlRows = xlCurReg("Rows")
xlColumns = xlCurReg("Columns")

sy = 0+xlRows("Count") ; 縦の項目数を取得
sx = 0+xlColumns("Count") ; 横の項目数を取得

repeat sy:y=cnt
repeat sx:x=cnt
xlCur = xlRange("Offset",y,x) ; X,Yのセルを取得
data = xlCur("Text") ; 内容テキストを取り出す
mes "("+x+","+y+")="+data ; 表示する
loop
loop

; COMのあとしまつ
delcom xlCur : delcom xlColumns : delcom xlRows
delcom xlCurReg : delcom xlRange : delcom xlSheet
delcom xlBook
xlBooks->"Close" : delcom xlBooks
xlApp->"Quit" : delcom xlApp


テストデータが、以下のURLにありますので、実験してみてください。
http://hsp.tv/misc/test.xls

このスクリプトを実行するためには、Excelがインストールされている
必要がありますので、注意してください。

投稿者 usuaji : 2006年10月25日 01:24

口臭チェッカー市場