Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > win32oleライブラリ > WIN32OLE_TYPEクラス

class WIN32OLE_TYPE

クラスの継承リスト: WIN32OLE_TYPE < Object < Kernel

要約

WIN32OLE_TYPEオブジェクトは、型情報ライブラリ(TypeLib)内に定義された 1つの型情報を保持します。

サンプルコード

require 'win32ole'

excel_app_type = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
puts excel_app_type.progid # => "Excel.Application.14"

目次

特異メソッド
new ole_classes progids typelibs
インスタンスメソッド
guid helpcontext helpfile helpstring major_version minor_version name to_s ole_methods ole_type progid src_type typekind variables visible?

特異メソッド

new(libname, ole_class) -> WIN32OLE_TYPE[permalink][rdoc]

WIN32OLE_TYPEオブジェクトを生成します。

[PARAM] libname:
生成するTypeLibのレジストリ上のドキュメント文字列 (WIN32OLE_TYPELIB#name)または GUID(WIN32OLE_TYPELIB#guid)またはTLBファイル名を 文字列で指定します。
[PARAM] ole_class:
型情報を取り出す型の名前を指定します。
[RETURN]
指定されたTypeLIbに定義された型の情報を格納したWIN32OLE_TYPEオブジェクトを返します。
[EXCEPTION] WIN32OLERuntimeError:
TypeLibが見つかりません。またはole_classで指定した型が未定義です。
excel_app_type = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
puts excel_app_type.progid # => "Excel.Application.14"

TypeLibに定義されているすべての型を取得するには、 WIN32OLE_TYPE.ole_classesを利用します。

ole_classes(libname) -> [WIN32OLE_TYPE][permalink][rdoc]

TypeLibで定義されているすべての型情報を取得します。

[PARAM] libname:
生成するTypeLibのレジストリ上のドキュメント文字列 (WIN32OLE_TYPELIB#name)または GUID(WIN32OLE_TYPELIB#guid)またはTLBファイル名を 文字列で指定します。
[RETURN]
TypeLibに格納されているすべての型をWIN32OLE_TYPEオブジェクトの配列として返します。
[EXCEPTION] WIN32OLERuntimeError:
引数で指定したTypeLibが見つかりません。
types = WIN32OLE_TYPE.ole_classes('Microsoft Excel 14.0 Object Library')
classes = types.map{|k| k.name} # => ["Adjustments", "CalloutFormat", ...]
progids -> [String][permalink][rdoc]

システムに登録されているすべてのコンポーネントクラスのPROGIDを取得します。

[RETURN]
システムに登録されているすべてのコンポーネントクラスのPROGIDを 文字列配列で返します。
excel = nil
WIN32OLE_TYPE.progids.each do |pg|
  if pg =~ /excel\.application/i   # ExcelのPROGIDをバージョン無視で取り出す
    excel = WIN32OLE.new(pg)
    break
  end
end
unless excel
  $stderr.puts "Excel isn't installed"
  exit(1)
end
excel.visible = true
# ...
excel.Quit

PROGIDは、生成可能なOLEオートメーションサーバのCoClass(コンポーネント クラス)が持つレジストリ登録名です。WIN32OLE.newの引数に指定して WIN32OLEオブジェクトを生成できます。

typelibs -> [String][permalink][rdoc]

システムに登録されているすべてのTypeLibのドキュメント文字列を取得します。

[RETURN]
システムに登録されているすべてのTypeLibのドキュメント文字列の配 列を返します。

インスタンスメソッド

guid -> String | nil[permalink][rdoc]

この型のGUID(グローバル一意識別子)を取得します。

[RETURN]
GUIDを文字列で返します。GUIDを持たない型の場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
puts tobj.guid  # => {00024500-0000-0000-C000-000000000046}

GUIDは、COMのクラス識別子(CLSID)、インターフェイス識別子(IID)など多数の 領域でWindows上のオブジェクトの識別に利用される128ビットの値です。

helpcontext -> Integer | nil[permalink][rdoc]

この型に関連するヘルプファイルのトピックID(ヘルプコンテキスト)を取得 します。

[RETURN]
型に関連するヘルプコンテキストを整数で返します。ヘルプコンテキ ストが登録されていない場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Worksheet')
puts tobj.helpcontext # => 131185
helpfile -> String | nil[permalink][rdoc]

オブジェクトに関連付けられたヘルプファイルのフルパス名。

ここで返されたヘルプファイルを表示するには、 WIN32OLE#ole_show_helpメソッドを呼び出します。

オブジェクトがヘルプファイルを持たない場合はnilを返します。

[RETURN]
オブジェクトに関連付けられたヘルプファイルのフルパス名を文字列で返します。 ヘルプファイルが未定義の場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Worksheet')
puts tobj.helpfile # => C:\...\VBAXL9.CHM
WIN32OLE.ole_show_help tobj.helpfile, tobj.helpcontext
# 注)WIN32OLE.ole_show_help(tobj) の呼び出しが望ましい

当メソッドがフルパス名を返しても、ヘルプファイルがインストールされてい ない場合があることに注意してください。

また、返送値はOLEサーバの登録値をそのまま利用するため、Rubyのパス名形式 (ディレクトリ区切りは「/」)ではなく、Windowsのパス名形式(ディレクト リ区切りは「\」)です。

helpstring -> String | nil[permalink][rdoc]

型のドキュメント文字列を取得します。

[RETURN]
ドキュメント文字列を返します。未定義の場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Internet Controls', 'IWebBrowser')
p tobj.helpstring   # => "Web Browser interface"

ドキュメント文字列は、コンテキストヘルプなどに利用可能な型の簡単な説明文です。

major_version -> Integer[permalink][rdoc]

型のメジャーバージョン番号を取得します。

[RETURN]
型のメジャーバージョン番号を整数で返します。
[EXCEPTION] WIN32OLERuntimeError:
型属性の読み取りに失敗すると通知します。
tobj = WIN32OLE_TYPE.new('Microsoft Word 14.0 Object Library', 'Documents')
p tobj.major_version   # => 8
minor_version -> Integer[permalink][rdoc]

型のマイナーバージョン番号を取得します。

[RETURN]
型のマイナーバージョン番号を整数で返します。
[EXCEPTION] WIN32OLERuntimeError:
型属性の読み取りに失敗すると通知します。
tobj = WIN32OLE_TYPE.new('Microsoft Word 14.0 Object Library', 'Documents')
p tobj.minor_version   # => 5
name -> String[permalink][rdoc]
to_s -> String

selfの型名を取得します。

[RETURN]
selfの型名を文字列で返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
p tobj.name   # => "Application"
ole_methods -> [WIN32OLE_METHOD][permalink][rdoc]

型が持つメソッドのメタデータを取得します。

[RETURN]
型が持つメソッドのメタデータをWIN32OLE_METHODの配列として返します。 メソッドを持たない場合は空配列を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Worksheet')
methods = tobj.ole_methods.map {|m| m.name }
                     # => ['QueryInterface', 'AddRef', 'Release',....]

[SEE_ALSO] WIN32OLE_METHOD

ole_type -> String | nil[permalink][rdoc]

selfの型の種類(TYPEKIND)を取得します。

[RETURN]
selfの型の種類を文字列で返します。情報が取得できない場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
p tobj.ole_type  # => Class

ole_typeには以下があります。

Enum

列挙子(0)

Record

ユーザ定義型(メソッドを持たない構造体)(1)

Module

モジュール(静的関数やデータだけを保持)(2)

Interface

COMのインターフェイス(メソッド定義の集合)(3)

Dispatch

OLEオートメーションサーバ(4)

Class

コンポーネントクラス(InterfaceやDispatchの実装)(5)

Alias

他の型の別名(6)

Union

共用体(7)

Max

型の種類を示す列挙体の終端マーカ(8)

MaxはTYPEKINDの終端マーカなので意味を持ちません。

[SEE_ALSO] WIN32OLE_TYPE#typekind

progid -> String | nil[permalink][rdoc]

selfのPROGIDを取得します。

PROGIDは、生成可能なOLEオートメーションサーバのCoClass(コンポーネント クラス)が持つレジストリ登録名です。WIN32OLE.newの引数に指定して WIN32OLEオブジェクトを生成できます。

[RETURN]
selfのPROGIDを文字列で返します。selfがPROGIDを持たない、または CoClassでない場合はnilを返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
p tobj.progid   # => "Excel.Application.14"

この例は、ExcelのApplicationクラスが「Excel.Application.14」という PROGIDを持つことを示します。

[SEE_ALSO] WIN32OLE.new

src_type -> String | nil[permalink][rdoc]

selfが他の型の別名ならば、元の型名を取得します。

[RETURN]
selfが別名ならば元の型名を文字列で返します。別名でなければnilを 返します。
tobj =  WIN32OLE_TYPE.new('Microsoft Office 14.0 Object Library', 'MsoRGBType')
p tobj.src_type   # => "I4"

この例は、OfficeのMsoRGBType型は符号付き32ビット整数(I4)の別名だとい うことを示します。

typekind -> Integer[permalink][rdoc]

selfの種類を示す値を取得します。

値の意味については、WIN32OLE_TYPE#ole_typeを参照してください。

[RETURN]
型の種類を示す数値を返します。
[EXCEPTION] WIN32OLERuntimeError:
型の種類(TYPEKIND)を取得できない場合に通知します。
tobj = WIN32OLE_TYPE.new('Microsoft Word 14.0 Object Library', 'Documents')
p tobj.typekind   # => 4

[SEE_ALSO] WIN32OLE_TYPE#ole_type

variables -> [WIN32OLE_VARIABLE][permalink][rdoc]

型が持つ変数を取得します。

型がEnum(列挙型)やユーザ定義型の場合、メンバ変数の情報を WIN32OLE_VARIABLEオブジェクトの配列として返します。

[RETURN]
型が持つ変数情報をWIN32OLE_VARIABLEの配列として返します。 変数を持たない場合は空配列を返します。
[EXCEPTION] WIN32OLERuntimeError:
型属性が取得できない場合に通知します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'XlSheetType')
vars = tobj.variables
vars.each do |v|
  puts "#{v.name} = #{v.value}"
end

上記を実行すると以下の出力が得られます。

xlChart = -4109
xlDialogSheet = -4116
xlExcel4IntlMacroSheet = 4
xlExcel4MacroSheet = 3
xlWorksheet = -4167

[SEE_ALSO] WIN32OLE_VARIABLE

visible? -> bool[permalink][rdoc]

この型が公開されているかどうかを照会します。

[RETURN]
公開されていれば真を返します。
tobj = WIN32OLE_TYPE.new('Microsoft Excel 14.0 Object Library', 'Application')
p tobj.visible?  # => true