XPath.SetValue メソッド (Excel)

指定した XPath オブジェクトを ListColumn オブジェクトまたは Range コレクションにマップします。 XPath オブジェクトが既に、ListColumn オブジェクトまたは Range コレクションに対してマップされている場合は、SetValue メソッドは XPath オブジェクトのプロパティを設定します。

構文

SetValue (MapXPathSelectionNamespace繰り返し)

XPath オブジェクトを表す変数。

パラメーター

名前 必須 / オプション データ型 説明
Map 必須 XmlMap マップ範囲に関連付けるマップ情報を指定します。
XPath 必須 文字列型 (String) このマップされた範囲にどの XML データを表示するかを Excel に指示する有効な XPath 式。 XPath 文字列には有効なフィルターを含めることもできます。その場合、XPath が指すデータのサブセットのみが、このマップされた範囲に表示されます。
SelectionNamespace 省略可能 バリアント型 (Variant) XPath 引数で使用される名前空間プレフィックスを指定します。 XPath オブジェクトにプレフィックスが含まれていない場合、または XPath オブジェクトが Microsoft Excel の内部プレフィックスを使用している場合は、この引数を省略できます。
Repeating 省略可能 バリアント型 (Variant) XPath オブジェクトを XML リストの列に連結するか、1 つのセルにマップするかを指定します。 True の場合は、 XPath オブジェクトを、XML リストにある 1 つの列にバインドします。 False の場合は、非繰り返しセルを強制的に作成します。 範囲が 1 セルより大きいときに False が指定されている場合、実行時エラーが発生します。

注釈

Excel での XPath サポートの詳細については、XMLMap オブジェクトの IsExportable プロパティを参照してください。 XPath 式が無効な場合、または指定された XPath が既にマップされている場合は、実行時エラーが発生します。

Excel が名前空間を解決できない場合、実行時エラーが発生します。

次のいずれかの条件に当てはまる場合、このメソッドはエラーを生成します。

  • 範囲がグリッドの複数列にまたがっている。

  • 範囲の一部分しかセルにマップされていない (セルのマップされていない範囲が存在する)。

  • 同じ範囲に対して異なるマッピングが指定されているか、異なる XPath が指定されている。

範囲が 1 つのセルの場合、Excel の既定では、単一マップされ繰り返されないマップ済みセルが作成されます。 非繰り返しセルに見出しは設定されません。

上記のステートメントの例外は、単一セル範囲が ListObject 内にある場合に発生します。この場合、マッピング情報は列全体に適用されます。

範囲が複数のセルにまたがる場合、Excel は繰り返し XML リストを作成します。 Excel では、選択された範囲がすべてのデータ値として扱われるため、XML リストが作成されると、範囲は 1 行下にシフトし、範囲の先頭が占めるセルにヘッダーが配置されます。 挿入行は、シフトされた範囲の下部にあります。

注:

  • Excel の見出し検出アルゴリズムは、オブジェクト モデルでは使用されません。 グリッド内に見出しは存在しないものと見なされます。
  • オブジェクト モデルにおけるマップ範囲の作成時は、セルの結合やサイズ調整を自動で行う機能は無効化されます。

次の例では、ブックに添付されている連絡先スキーマ マップに基づいて 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 のサポートおよびフィードバックを参照してください。