Ruby 2.3.0 リファレンスマニュアル > ライブラリ一覧 > win32oleライブラリ > WIN32OLE_VARIABLEクラス
クラスの継承リスト: WIN32OLE_VARIABLE < Object < Kernel < BasicObject
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]to_s -> String
変数名を取得します。
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]変数の型を取得します。
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]変数の型と属性を取得します。
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]変数の値を取得します。
変数情報によってはenum値のように定数値を持つものがあります。valueメソッ ドはこのような定数値を返します。
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]変数の種類(VARKIND)を取得します。
この変数の種類を示す文字列を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') puts tobj.variables.map {|v| v.variable_kind}.uniq # => CONSTANT
返送値は以下のいずれかとなります。
インスタンス毎の変数。構造体やユーザ定義体のフィールド。(0)
クラスの静的変数。(1)
定数。enumやモジュールのメンバ。(2)
変数アクセスにオートメーションを利用。旧型式のプロパティ。(3)
[SEE_ALSO] WIN32OLE_VARIABLE#varkind
varkind -> Integer
[permalink][rdoc]変数の種類(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]変数の可視性を取得します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType') puts tobj.variables.map {|v| v.visible?}.uniq # => true