要約
OLEオートメーションの変数情報をRubyで参照するためのクラスです。
OLEオートメーションサーバは、定数(WIN32OLE.const_load)、メソッド/プロパティ(WIN32OLE_METHOD)、イベント(WIN32OLE_EVENT)のほかに変数をクライアントへ提供できます。WIN32OLE_VARIABLEクラスは、サーバが提供する変数の情報をオブジェクト化します。変数情報にはCOMで決められた構造体やユーザ定義型のフィールド情報などがありますが、最も良く利用されるのはenum(列挙型)のメンバ情報です。enumのメンバは定数として利用できます。
WIN32OLE_VARIABLEのオブジェクトは、WIN32OLE_TYPE#variablesメソッドを利用して取得します。
サンプルコード
require 'win32ole' tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') variables = tobj.variables variables.each do |variable| puts "#{variable.name}=#{variable.value}" end
実行結果は以下となります。
xlChart=-4109 xlDialogSheet=-4116 xlExcel4IntlMacroSheet=4 xlExcel4MacroSheet=3 xlWorksheet=-4167
目次
- インスタンスメソッド
インスタンスメソッド
name -> String
[permalink][rdoc][edit]to_s -> String
-
変数名を取得します。
- [RETURN]
- 変数名を文字列で返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') variables = tobj.variables variables.each do |variable| puts "#{variable.name}" # => xlChart, xlDialogSheet, ... end
ole_type -> String
[permalink][rdoc][edit]-
変数の型を取得します。
- [RETURN]
- 変数の型名を文字列で返します。型名を文字列に変換できない場合は、「Unknown Type nn」(nnはバリアント型を示す数値)の形式の文字列を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') variables = tobj.variables variables.each do |variable| puts "#{variable.ole_type} #{variable.name}" end
OLEオートメーションの型名は、対応するWIN32OLE::VARIANTの定数の先頭の「VT_」を削除した名称を持ちます。
ole_type_detail -> [String]
[permalink][rdoc][edit]-
変数の型と属性を取得します。
- [RETURN]
- 変数の型と属性を文字列配列で返します。
tobj = WIN32OLE_TYPE.new('Microsoft XML, v5.0', 'tagSTATSTG') tobj.variables.each do |v| puts "#{v.ole_type} [#{v.ole_type_detail.join(', ')}] #{v.name}" end
出力結果
Unknown Type 31 [] pwcsName # => VT_LPWSTR はWIN32OLE::VARIANTで未定義なので変換できない UI4 [UI4] type _ULARGE_INTEGER [USERDEFINED, _ULARGE_INTEGER] cbSize _FILETIME [USERDEFINED, _FILETIME] mtime _FILETIME [USERDEFINED, _FILETIME] ctime _FILETIME [USERDEFINED, _FILETIME] atime UI4 [UI4] grfMode UI4 [UI4] grfLocksSupported GUID [USERDEFINED, GUID] clsid UI4 [UI4] grfStateBits UI4 [UI4] reserved
上例のように、WIN32OLE_VARIABLEで取得できる変数あるいはその元となる構造体は、必ずしもOLEオートメーション互換データというわけではありません。このようなデータはWIN32OLEからは利用できません。
value -> object | nil
[permalink][rdoc][edit]-
変数の値を取得します。
変数情報によってはenum値のように定数値を持つものがあります。valueメソッドはこのような定数値を返します。
- [RETURN]
- この変数が持つ定数値。値を持たない場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') variables = tobj.variables variables.each do |variable| puts "#{variable.name}=#{variable.value}" end
実行結果は以下となります。
xlChart=-4109 xlDialogSheet=-4116 xlExcel4IntlMacroSheet=4 xlExcel4MacroSheet=3 xlWorksheet=-4167
variable_kind -> String
[permalink][rdoc][edit]-
変数の種類(VARKIND)を取得します。
この変数の種類を示す文字列を返します。
- [RETURN]
- VARKINDに対応する文字列を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') puts tobj.variables.map {|v| v.variable_kind}.uniq # => CONSTANT
返送値は以下のいずれかとなります。
- PERINSTANCE
-
インスタンス毎の変数。構造体やユーザ定義体のフィールド。(0)
- STATIC
-
クラスの静的変数。(1)
- CONSTANT
-
定数。enumやモジュールのメンバ。(2)
- DISPATCH
-
変数アクセスにオートメーションを利用。旧型式のプロパティ。(3)
[SEE_ALSO] WIN32OLE_VARIABLE#varkind
varkind -> Integer
[permalink][rdoc][edit]-
変数の種類(VARKIND)を取得します。
この変数の種類を示す数値を返します。
- [RETURN]
- VARKINDに対応する数値を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') puts tobj.variables.map {|v| v.varkind}.uniq # => 2
数値の意味については、WIN32OLE_VARIABLE#variable_kindの説明を参照してください。
visible? -> bool
[permalink][rdoc][edit]-
変数の可視性を取得します。
- [RETURN]
- publicアクセス可能であれば真を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') puts tobj.variables.map {|v| v.visible?}.uniq # => true