HSPとExcel VBAで情報取得 (COMオブジェクトの活用)
1.概要
HSP3やExcel VBAでは、COM(コンポーネント・オブジェクト・モデル)が操作できます。
比較的簡単なパラメータを与えるだけで、Windows が持つシステムコンポーネントやフリーで公開されている
各種コンポーネントの機能を利用することでき ます。
HSP3が提供している命令群では、 COMオブジェクトの作成とインターフェースの取得、インターフェース
ポインタからのメソッドの呼び出しなど豊富なオブジェクトアクセ ス手段が
提供されています。Excelにおいても、同じです。今回は、HSP3とExcel VBAを比較しながら
機能の確認をするためにCOM操作の入門として比較的移植や理解のしやすい WSH (Windows Script Host(以下WSH)
を取り上げて見ました。WSHは、Windowsが標準でサポートするスクリプト環境で、テキストベースのスクリプトを
記述することで、従来のバッチに代わるものとして、GUI環境に頼らずにWindows環境でさ まざまな処理を実行できます。
尚、具体的なサンプル例などについては、何回かに分けて紹介していく予定です。
2.WSH(VBScript)の活用法について WSHではスクリプト言語として、VBライクな言語であるVBScriptや、 JavaScriptライクなJScriptを標準で利用できます。 どちらのスクリプト言語を利用しても機能的には大き な違いはありません。HSP3からは、次のCOM関連命令を使って制御します。
Excel VBAの場合は、CreateObject関数で、ActiveX オブジェクトへの参照と作成して返します。 CreateObject関数を使う事で、参照設定することなくActiveX オブジェクトを使用できるようになります。 DimステートメントでObject型変数を作成して利用します。
HSP3からすべてを利用できるわけではないのですが、WSHの各オブジェクトの役割を簡単にまとめると次のようになります。 これらをHSP3のCOMオブジェクト操作関連命令で操作することになります。
各オブジェクトについて、さらに詳細を知りたければMSDNのページやネット上のサイトや 書籍を参照して下さい。 それでは、WSH (VBScript)を利用してメモ帳を起動する簡単なスクリプトを例として、 HSP3での記述方法と 対比して見ましょう。
■関連記事
・HSPとExcel VBAで情報取得 (その1)
・HSPとExcel VBAで情報取得 (その2)
・HSPとExcel VBAで情報取得 (その3)
・HSPとExcel VBAで情報取得 (その4)
2.WSH(VBScript)の活用法について WSHではスクリプト言語として、VBライクな言語であるVBScriptや、 JavaScriptライクなJScriptを標準で利用できます。 どちらのスクリプト言語を利用しても機能的には大き な違いはありません。HSP3からは、次のCOM関連命令を使って制御します。
HSP3のCOMオブジェクト操作関連命令 |
No. | 命令 | 役割 |
1 | newcom命令 | COMオブジェクト型変数の新規作成 |
2 | delcom命令 | COMオブジェクト型変数の破棄 |
3 | comres命令 | メソッド返値代入変数を設定する |
4 | mcall命令 | メソッドの呼び出し |
5 | comevent命令 | COMイベントの取得開始 |
6 | querycom命令 | COMオブジェクト型変数の作成 |
7 | axobj命令 | ActiveXコントロールの配置 |
8 | sarrayconv命令 | Variant型との一括変換を行なう |
9 | comevarg命令 | COMイベントのパラメーターを取得 |
10 | comevdisp関数 | COMイベントの内容を確認 |
11 | #comfunc命令 | 外部COM呼び出し命令登録 |
12 | #usecom命令 | 外部COMインターフェースの指定 |
Excel VBAの場合は、CreateObject関数で、ActiveX オブジェクトへの参照と作成して返します。 CreateObject関数を使う事で、参照設定することなくActiveX オブジェクトを使用できるようになります。 DimステートメントでObject型変数を作成して利用します。
HSP3からすべてを利用できるわけではないのですが、WSHの各オブジェクトの役割を簡単にまとめると次のようになります。 これらをHSP3のCOMオブジェクト操作関連命令で操作することになります。
WSHのオブジェクト一覧 |
No. | オブジェクト | 役割 |
1 | WScript | オブジェクトの作成・接続、画面表示など |
2 | WshArguments | コマンドライン引数にアクセスする |
3 | WshNamed | 名前付きコマンドライン・パラメータにアクセスする |
4 | WshUnnamed | 名前なしコマンドライン・パラメータにアクセスする |
5 | WshController | リモート・スクリプト・プロセスを作成する |
6 | WshRemote | コンピュータ・システムをリモートから管理する |
7 | WshRemoteError | WshRemoteオブジェクトが異常終了した場合のエラー情報にアクセスする |
8 | WshShell | ネットワーク共有の接続・切断など |
9 | WScript | プログラムの実行・環境変数の操作など |
10 | WshShortcut | ショートカットを作成する |
11 | WshUrlShortCut | インターネット・リソースへのショートカットを作成する |
12 | WshScriptExec | Exec()で実行したスクリプトに関するステータス情報、及びエラー情報を取得する |
13 | WshEnvironment | 環境変数にアクセスする |
14 | WshSpecialFolders | Windowsの専用フォルダにアクセスする |
各オブジェクトについて、さらに詳細を知りたければMSDNのページやネット上のサイトや 書籍を参照して下さい。 それでは、WSH (VBScript)を利用してメモ帳を起動する簡単なスクリプトを例として、 HSP3での記述方法と 対比して見ましょう。
'***** WSH (VBScript - Excel VBA)の場合 ***** Dim wsh As Object Set wsh = CreateObject("Wscript.Shell") '***** メッセージを出力(WScript.Echoを RangeやMesBoxで代用する) ***** MesBox "メモ帳を起動します。" '***** wshの Runメソッドで notepad.exe を起動 ***** wsh.Run "notepad.exe" '***** COMオブジェクト破棄 ***** Set wsh = Nothing
;***** HSPスクリプトの場合 ***** ;* newcom命令でプログラムIDと呼ばれる文字列(WScript.Shell)をパラメータとして ;* 指定しwshというオブジェクト型変数に代入 newcom wsh,"WScript.Shell" ;***** WScript.Echoに相当する部分を mes命令やdialog命令で代用する ***** dialog "メモ帳を起動します。" ;***** wshの Runメソッドで notepad.exe を起動 ***** wsh->"Run" "notepad.exe" ;***** COMオブジェクト破棄 ***** delcom wshVBScript(Excel VBA)とHSP3での記述方法の比較で判るように、 非常に似通っており移植性が高いと言えます。簡単なものであれば、 このような方法で書き換えることができます。 HSP3やExcel VBAの豊富な命令や関数、さらにWin32APIをコールして組み合わせれば、 応用範囲や適用範囲も拡大されることでしょう。
■関連記事
・HSPとExcel VBAで情報取得 (その1)
・HSPとExcel VBAで情報取得 (その2)
・HSPとExcel VBAで情報取得 (その3)
・HSPとExcel VBAで情報取得 (その4)
コメント
コメントを投稿