コレクションオブジェクトOfficeアプリケーションが作成するオブジェクトには、コレクションオブジェクトと呼ばれる種類があります。ExcelのWorkbooksオブジェクトはWorkbookオブジェクトを管理しています。Itemプロパティは指定されたインデックスで識別されるオブジェクトを返します。今回のプログラムは、Excelのワークブックに含まれるワークシートの名前を表示します。ワークシートが3個存在するのであれば、3回名前が表示されることになります。ワークブックは、c:\\sample.xlsであると仮定しています。TEXT("ワークブックのオープンに失敗しました。hr;}ワークシートを列挙するには、Worksheetsオブジェクトを取得しなければなりません。このための処理は次のようになっています。Workbookオブジェクトを取得しなければなりません。Workbooksオブジェクトは、ApplicationオブジェクトのWorkbooksメソッドを呼び出すことで取得できます。これでWorkbookオブジェクトを取得できたことになります。後はこのオブジェクトのWorksheetsプロパティを呼び出せば、Worksheetsオブジェクトを取得できたことになります。Worksheetsオブジェクトを取得したら、Countプロパティを呼び出してオブジェクトの数を取得します。この数だけItemプロパティを呼び出してWorksheetオブジェクトを取得します。+1を指定した状態でインデックスを指定することになります。Nameプロパティの呼び出しに使用されています。このプロパティは、ワークシートの名前をBSTR型で返すことができます。VariantClearを呼び出しているのは、このBSTR型を開放するためです。_NewEnumプロパティとIEnumVARIANTコレクションオブジェクトが管理するオブジェクトは、_NewEnumプロパティを呼び出すことによっても列挙することができます。これを取得してオブジェクトを列挙します。TEXT("ワークブックのオープンに失敗しました。hr;}Worksheetsオブジェクトを取得したら_NewEnumプロパティを呼び出します。これは少し特殊なプロパティであり、タイプライブラリやMSDNからはこの名前を確認することができません。Invokeの第2引数にNULLを指定した場合はそのような処理が実行されることになっています。QueryInterfaceにIEnumVARIANTのIIDを指定して取得します。IEnumVARIANTへのポインタを取得したら、Nextメソッドを呼び出すことでオブジェクトを列挙することができます。