self[name] = value[permalink][rdoc]self[name, param...] = value-
オブジェクトのプロパティを設定します。
注意: このメソッドはRuby-1.9以降で動作が変わります。Ruby-1.9では WIN32OLE#setpropertyを利用してください。
[]でプロパティ名を指定したプロパティに値を設定します。
パラメータ付きプロパティの場合は、プロパティ名に続けて引数を「,」で区切って列記します。
なお、OLEオートメーションの仕様により、プロパティ名の大文字、小文字は区別されません。
- [PARAM] name:
- プロパティ名を文字列で指定します。
- [PARAM] param:
- プロパティが引数を取る場合に指定します。
- [PARAM] value:
- プロパティに設定する値を指定します。
- [EXCEPTION] WIN32OLERuntimeError:
- オートメーションサーバの呼び出しに失敗しました。理由はメッセージのHRESULTを調べてください。
OLEオートメーションのプロパティはRubyの属性と異なり、パラメータを取ることができます。
たとえばExcelのWorksheetオブジェクトのCellsプロパティは桁位置と行番号の 2つのパラメータを取ります。
これはVBでは次のように記述できます。
sheet.Cells(1, 1) = sheet.Cells(1, 2) ' セルB1の内容をセルA1へ
Rubyでは上記のコードの右辺をVBと同じく「sheet.Cells(1, 2)」のように記述できますが、左辺の記述はできません。
そのため、次の例のように[]=メソッドを利用して、パラメータ付きプロパティを設定します。
excel = WIN32OLE.new('Excel.Application') excel.visible = true sheet = excel.Workbooks.Add.Worksheets(1) sheet['Cells', 1, 2] = 321 sheet['Cells', 1, 1] = sheet['Cells', 1, 2] #== sheet['Cells', 1, 1] = sheet.Cells(1, 2)