删除内容控件时从数据存储区删除数据

可以通过调用 ContentControl 对象的 Delete 方法来删除内容控件。 例如,以下代码删除标题为"MyTitle"的内容控件。

ActiveDocument.ContentControls.Item("MyTitle").Delete

还可以通过调用要删除的 CustomDataXMLNode 对象的 Delete 方法来删除单个节点。 可以通过调用要删除的 CustomXMLPart 对象的 Delete 方法来删除整个自定义 XML 部件。

有关内容控件的详细信息,请参阅 使用内容控件进行组织。 以下示例中所用对象如下:

示例 1

第一个代码示例创建一个内容控件,并对该内容控件设置 XML 映射。

构建一个有效的自定义 XML 文件,保存在硬盘上,然后向要映射的信息所在的文档添加一个数据存储区。

假设内容控件将映射到以下示例自定义 XML 文件。

<?xml version="1.0" encoding="utf-8" ?> 
<tree> 
  <fruit> 
    <fruitType>peach</fruitType> 
    <fruitType>pear</fruitType> 
    <fruitType>banana</fruitType> 
  </fruit> 
</tree>

Now, suppose the content control is mapped to a <fruitType> node of the previous custom XML part.

Sub AddContentControlAndCustomXMLPart() 
 
    Dim strTitle As String 
    strTitle = "MyTitle" 
    Dim oContentControl As Word.ContentControl 
 
    Set oContentControl = ActiveDocument.ContentControls.Add(wdContentControlText) 
    oContentControl.Title = strTitle 
 
    ActiveDocument.CustomXMLParts.Add 
    ActiveDocument.CustomXMLParts(4).Load ("c:\mySampleCustomXMLFile.xml") 
 
    Dim strXPath As String 
    strXPath = "tree/fruit/fruitType" 
    oContentControl.XMLMapping.SetMapping strXPath 
     
End Sub

示例 2

第二个代码示例在删除内容控件时删除整个 CustomXMLPart 对象。

Private Sub Document_ContentControlBeforeDelete( _ 
        ByVal OldContentControl As ContentControl, _ 
        ByVal InUndoRedo As Boolean) 
 
    Dim objPart As CustomXMLPart 
     
    'Always void changing the Word document surface during undo! 
    If InUndoRedo Then 
        Return 
    End If 
 
    'Also delete the part with a root element called 'tree' 
    If OldContentControl.Title = "MyTitle" Then 
        For Each objPart In ActiveDocument.CustomXMLParts 
            If objPart.DocumentElement.BaseName = "tree" Then 
                objPart.Delete 
            End If 
        Next part 
    End If 
 
End Sub

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。