Compartilhar via


Remover dados do Armazenamento de Dados ao excluir um controle de conteúdo

You can delete a content control by calling the Delete method of the ContentControl object. For example, the following code deletes the content control with the title "MyTitle".

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

You can also delete a single node by calling the Delete method of the CustomDataXMLNode object that you want to remove. Você poderá excluir uma parte inteira XML personalizada chamando o método Delete do objeto CustomXMLPart que você deseja remover.

Para obter mais informações sobre controles de conteúdo, consulte orking com Controles de Conteúdo. Os objetos usados nestes exemplos são:

Exemplo 1

O primeiro exemplo de código cria um controle de conteúdo e define um mapeamento XML em um controle de conteúdo.

Build a valid custom XML file, save it to your hard disk drive, and add a data store to the document that contains the information you want to map to.

Suppose the content control is mapped to the following sample custom XML file.

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

Agora, suponha que o controle de conteúdo seja mapeado para um <nó fruitType> da parte XML personalizada anterior.

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

Exemplo 2

O segundo exemplo de código remove todo o objeto CustomXMLPart quando o controle de conteúdo é excluído.

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

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.