instance method WIN32OLE#_getproperty
_getproperty(dispid, args, types) -> object
-
DISPIDとパラメータの型を指定してオブジェクトのプロパティを参照します。
アクセスするプロパティのインターフェイスを事前に知っている場合に、 DISPIDとパラメータの型を指定してプロパティを参照します。
- [PARAM] dispid:
- プロパティのDISPID(メソッドを一意に特定する数値)を指定 します。
- [PARAM] args:
- プロパティが引数を取る場合に配列で指定します。引数の順序は 最左端の引数のインデックスを0とします。引数が不要な場合は空 配列を指定します。
- [PARAM] types:
- プロパティが引数を取る場合に配列で引数の型を指定します。引 数の順序は最左端の引数のインデックスを0とします。型の指定 には、WIN32OLE::VARIANTの定数を利用します。引数が不 要な場合は空配列を指定します。
このメソッドはCOMアーリーバインディングを利用することで外部プロセスサー バとのラウンドトリップを減らして処理速度を向上させることを目的としたも のです。このため、DLLの形式で型情報(TypeLib)を提供しているサーバに対 してはあまり意味を持ちません。
- [RETURN]
- プロパティ値を返します。
- [EXCEPTION] WIN32OLERuntimeError:
- オートメーションサーバの呼び出しに失敗しました。 理由はメッセージのHRESULTを調べてください。
DISPID_CELLS = 238 include WIN32OLE::VARIANT excel = WIN32OLE.new('Excel.Application') puts excel._getproperty(558, [], []) # VisibleプロパティのDISPIDは558 workbook = excel.Workbooks.Add sheet = workbook.Worksheets[1] sheet._setproperty(DISPID_CELLS, [1, 2, 'hello'], [VT_I2, VT_I2, VT_BSTR]) puts sheet._getproperty(DISPID_CELLS, [1, 2], [VT_I2, VT_I2]).value #=> 'hello' workbook.Close(:SaveChanges => false) excel.Quit
DISPIDはWIN32OLE_METHOD#dispidから取得できます。
[SEE_ALSO] WIN32OLE::VARIANT
class WIN32OLE