Win32::OLE::Enumモジュール(日本語チョウ訳) Ver. 0.14対応

by Hippo2000(2001/2/20)

Jan Duboisさんにはメールで了解をいただきました。

内容等が間違っていたら修正します。ご連絡ください。



名前

Win32::OLE::Enum - OLE オートメーション コレクション オブジェクト


概要

    my $Sheets = $Excel->Workbooks(1)->Worksheets;
    my $Enum = Win32::OLE::Enum->new($Sheets);
    my @Sheets = $Enum->All;

    while (defined(my $Sheet = $Enum->Next)) { ... }


説明

このモジュールはPerlからOLEコレクション・オブジェクトへのインタフェースを提供します。これはIEnumVARIANTインターフェースの機能をほとんどそのままのような列挙するオブジェクトを定義します。

Reset()メソッドがOLEコレクションのすべての実装で利用できるわけではない(Excel7のように)ことに注意してください。その場合、Enumオブジェクトはコレクションを一度だけ通してみていくためだけに有効です。

関数/メソッド

Win32::OLE::Enum->new($object)
$objectのためのEnumオブジェクトを作成します。$objectは正しいOLEコレクション・オブジェクトでなければなりません。正しく実装されたコレクション・オブジェクトはCountとItemメソッドをサポートしていなければならないことに注意してください。そのためEnumオブジェクトは常には必要ありません。
$Enum->All()
そのコレクションのなかのすべてのオブジェクトのリストを返します。列挙するオブジェクトをもう一度、使う前に $Enum->Reset() を呼ばなければなりません。コレクションの以前の位置は失われます。

このメソッドはクラスメソッドとしても呼び出すことができます:

   my @list = Win32::OLE::Enum->All($Collection);

$Enum->Clone()
コレクションでの現在の位置を保持するEnumオブジェクトのクローンを返す(もし可能であれば)。Cloneメソッドはよく実装されていないことに注意してください。Cloneがサポートされているかどうかわからなければ、死ぬのを避けるためevalブロックで$Enum->Clone()を使ってください。
$Enum->Next( [$count] )
コレクションの次の要素を返します。リスト・コンテキストではオプションの$count引数は返されるオブジェクトの数を指定します。スカラ・コンテキストでは$countの取り出されたオブジェクトの最後のものが返されます。$countのデフォルトは1です。
$Enum->Reset()
列挙の順番を最初に戻します。全く同じオブジェクトの集合が再び列挙されるかどうかは保証されません(例えばディレクトリに列挙されているファイルのとき)。メソッドは処理が正常であることを示す値を返します(Reset()メソッドはExcel7のようにアプリケーションによっては実装されていないようであることに注意。死ぬことを避けるために、evalブロックを使ってください)
$Enum->Skip( [$count] )
列挙の次の$count分の要素を飛ばします。$countのデフォルトは1です。もし少なくとも$count分の要素が飛ばすことができれば関数はTRUEを返します。十分な数の要素が残っていなければFALSEを返します。

作者/著作権(AUTHORS/COPYRIGHT)

このモジュールはWin32::OLEディストリビューションの一部です。


ホーム Perlの小技

ご意見、ご質問はこちらの掲示板で受け付けています。
またメールは河馬屋(Nifty)にお願いします。