XPath.SetValue メソッド (Excel)
指定した XPath オブジェクトを ListColumn オブジェクトまたは Range コレクションにマップします。 XPath オブジェクトが既に、ListColumn オブジェクトまたは Range コレクションに対してマップされている場合は、SetValue メソッドは XPath オブジェクトのプロパティを設定します。
構文
式。SetValue (Map、 XPath、 SelectionNamespace、 Repeating)
式XPath オブジェクトを表す変数。
パラメーター
名前 | 必須 / オプション | データ型 | 説明 |
---|---|---|---|
Map | 必須 | XmlMap | マップ範囲に関連付けるマップ情報を指定します。 |
XPath | 必須 | 文字列型 (String) | このマップされた範囲に表示する XML データを Excel に通知する有効な XPath 式。 XPath 文字列には有効なフィルターを含めることもできます。その場合、XPath が指すデータのサブセットのみが、このマップされた範囲に表示されます。 |
SelectionNamespace | 省略可能 | バリアント型 | XPath 引数で使用される名前空間プレフィックスを指定します。 XPath オブジェクトにプレフィックスが含まれていない場合、または XPath オブジェクトで Microsoft Excel の内部プレフィックスが使用されている場合は、この引数を省略できます。 |
Repeating | 省略可能 | バリアント型 | XPath オブジェクトを XML リスト内の列にバインドするか、1 つのセルにマップするかを指定します。 True の場合は、 XPath オブジェクトを、XML リストにある 1 つの列にバインドします。 False の場合は、非繰り返しセルを強制的に作成します。 範囲が 1 つのセルより大きく、 False が 指定されている場合は、実行時エラーが発生します。 |
注釈
Excel での XPath サポートに関する説明については、XMLMap オブジェクトの IsExportable プロパティを参照してください。 XPath 式が無効な場合、または指定された XPath が既にマップされている場合は、実行時エラーが発生します。
Excel で名前空間を解決できない場合は、実行時エラーが発生します。
次のいずれかの条件に該当する場合、このメソッドはエラーを生成します。
範囲がグリッドの複数列にまたがっている。
範囲の一部分しかセルにマップされていない (セルのマップされていない範囲が存在する)。
同じ範囲に対して異なるマッピングが指定されているか、異なる XPath が指定されている。
範囲が 1 つのセルの場合、Excel は既定で、単一のマップされた繰り返しではないマップされたセルを作成します。 非繰り返しセルに見出しは設定されません。
前のステートメントの例外は、単一セル範囲が ListObject 内にある場合に発生します。この場合、マッピング情報が列全体に適用されます。
範囲が複数のセルにまたがる場合、繰り返し XML リストが作成されます。 Excel では、選択した範囲がすべてのデータ値として扱われるので、XML リストが作成されると、範囲が 1 行ずつ下にシフトされ、範囲の先頭が占めていたセルにヘッダーが配置されます。 挿入行は、シフトされた範囲の下部にあります。
注:
- Excel の見出し検出アルゴリズムは、オブジェクト モデルでは使用されません。 グリッド内に見出しは存在しないものと見なされます。
- オブジェクト モデルにおけるマップ範囲の作成時は、セルの結合やサイズ調整を自動で行う機能は無効化されます。
例
次の例では、ブックにアタッチされている Contacts スキーマ マップに基づいて XML リストを作成し、 SetValue メソッドを使用して各列を XPath オブジェクトにバインドします。
Sub CreateXMLList()
Dim mapContact As XmlMap
Dim strXPath As String
Dim lstContacts As ListObject
Dim objNewCol As ListColumn
' Specify the schema map to use.
Set mapContact = ActiveWorkbook.XmlMaps("Contacts")
' Create a new list.
Set lstContacts = ActiveSheet.ListObjects.Add
' Specify the first element to map.
strXPath = "/Root/Person/FirstName"
' Map the element.
lstContacts.ListColumns(1).XPath.SetValue mapContact, strXPath
' Specify the second element to map.
strXPath = "/Root/Person/LastName"
' Add a column to the list.
Set objNewCol = lstContacts.ListColumns.Add
' Map the element.
objNewCol.XPath.SetValue mapContact, strXPath
strXPath = "/Root/Person/Address/Zip"
Set objNewCol = lstContacts.ListColumns.Add
objNewCol.XPath.SetValue mapContact, strXPath
End Sub
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。