Open XML SDK 2.0 を使用して Excel 2010 ブックのすべての名前付き範囲の辞書を取得する
概要: Microsoft Excel にドキュメントを読み込まずに、Open XML SDK 2.0 の厳密に型指定されたクラスを使用して、Excel ブック内のすべての定義された名前とその範囲が含まれる辞書を取得します。
適用対象: Excel 2010 | Office 2010 | Open XML | PowerPoint 2010 | VBA | Visual Studio | Word 2010
公開: 2010 年 10 月
提供元: Ken Getz、MCW Technologies, LLC (英語)
![]() Open XML ファイル形式を使用して、Excel ブック内の定義された名前の情報を取得できますが、この処理は少し複雑です。Open XML SDK 2.0 では、Open XML ファイル形式へのアクセスを簡素化する、厳密に型指定されたクラスが追加されています。この SDK を使用すると、各ブック内の定義された名前のリストを簡単に取得できます。この Visual How To のサンプル コードでは、SDK を使用してこの処理を行う方法を示します。 ![]() この Visual How To のサンプルには、Excel 2007 (またはそれ以降) のドキュメント内の定義された各名前に関する情報が含まれる辞書を取得するために必要なコードが含まれています。この辞書内では、各アイテムのキーに範囲の名前が含まれ、値に範囲自体を表す文字列が含まれます。たとえば、図 1 は、サンプル ブックから取得した辞書の内容をループ処理した結果を示しています。以下の各セクションで、コードの内容を解説します。
図 1. サンプル コードを実行すると表示される辞書の内容
![]() 参照のセットアップ Open XML SDK 2.0 のコードを使用するには、プロジェクトにいくつかの参照を追加する必要があります。サンプル プロジェクトには既にこれらの参照が含まれていますが、独自のコードでは次のアセンブリを明示的に参照する必要があります。
また、コード ファイルの先頭に次の using ステートメントまたは Imports ステートメントを追加してください。
プロシージャの確認 XLGetDefinedNames プロシージャにはパラメーターが 1 つあり、辞書の取得元となるドキュメントの名前 (文字列) を示します。このプロシージャは、指定されたブック内の定義された名前に関する情報が含まれる辞書のインスタンスを返し、定義された名前がない場合は空の辞書を返します。
このプロシージャは、指定されたブックを調べて、定義された名前が含まれているパーツを探します。そのようなパーツがあった場合、そのパーツの内容をすべて反復処理し、定義された各名前の名前と値を辞書に追加して返します。サンプルの呼び出し側コードでは、返された辞書を反復処理して、各アイテムのキーと値を表示します。
ドキュメントへのアクセス コードでは、まず、このプロシージャが終了前に返す returnValue という名前の変数を作成します。
次に、SpreadsheetDocument.Open メソッドを使用して、(最後のパラメーターを false にして) 読み取り専用アクセスでブックを開きます。開いたブックの WorkbookPart プロパティを使用して、メインのブック パーツ内を移動します。この参照を wbPart という名前の変数に保存します。
定義された名前の取得 ブック パーツを取得したら、次の手順は単純です。wbPart 変数の Workbook プロパティを使用して、Open XML SDK 2.0 が提供する DefinedNames コレクションを取得します。このプロパティは、ブックに含まれるすべての定義された名前のコレクションを返します。このプロパティから null 以外の値が返された場合、コレクションを反復処理し、各名前付きパーツに関する情報を取得し、定義された名前ごとにキー (名前) と値 (範囲記述) を辞書に追加します。
サンプル プロシージャ サンプル プロシージャ全体を次のコード例に示します。
![]() この Visual How To のサンプルには、Excel ブック内の定義された名前に関する情報が含まれる辞書を取得するコードが含まれています。このサンプルを使用するには、「関連情報」のリンクから入手できる Open XML SDK 2.0 をインストールする必要があります。このサンプルでは、Open XML SDK 2.0 用コード スニペットに含まれているコードに変更を加えたコードも使用しています。「関連情報」には、スニペット全体へのリンクも記載されていますが、スニペットをダウンロードしてインストールしなくても、サンプルを使用することはできます。 サンプル コードの内容を理解するには、Open XML SDK 2.0 に付属の Microsoft Office 用 Open XML SDK 2.0 Productivity Tool を使用してブックの内容を調べると役立ちます。図 2 は、複数の定義された名前が含まれるサンプル ブックをこのツールで開いた状態を示しています。サンプル コードでは、ブック パーツへの参照を取得し、そのパーツ内の definedNames 要素を検出します。この要素には、ブック内の定義された名前ごとに 1 つの子要素が含まれます。
図 2. サンプル ブックを開き、definedNames 要素を探す
![]() Open XML SDK 2.0 では、ブックの DefinedNames プロパティを使用することによって、定義された名前のコレクションが返されます。SDK を使用しなくても同じ情報を取得することはできますが、SDK の厳密に型指定されたメンバーを使用する方が簡単です。 このサンプル アプリケーションで紹介したプロパティとメソッドは、ブックに関する情報を取得するときに使用できる Open XML SDK 2.0 のプロパティとメソッドの一部に過ぎません。詳細については、Open XML SDK 2.0 Productivity Tool に付属のドキュメントを参照してください。アプリケーション ウィンドウの左下隅にある [Open XML SDK ドキュメント] タブをクリックし、目的のクラスを探してください。ここで解説したサンプルとドキュメントを参考に、サンプル アプリケーションを適切に変更できます。 |
![]() ビデオを見る (英語) | 長さ: 00:06:04 ![]() 著者について |