Compartilhar via


Evento Document.XMLBeforeDelete (Word)

Ocorre quando um usuário exclui um elemento XML de um documento. Se mais de um elemento for excluído do documento de uma vez (por exemplo, ao recortar e colar XML), esse evento é acionado para cada elemento excluído.

Sintaxe

expressão. XMLBeforeDelete (DeletedRange, OldXMLNode, InUndoRedo)

expressão Uma variável que representa um objeto documento .

Parâmetros

Nome Obrigatório/Opcional Tipo de dados Descrição
DeletedRange Obrigatório Range O conteúdo do elemento XML que está sendo excluído. Se apenas um elemento é excluído e não associadas a texto, o parâmetro DeletedRange não existirá e, portanto, ser definirá como Nothing.
OldXMLNode Obrigatório XMLNode O nó que está sendo excluído.
InUndoRedo Obrigatório Boolean True indica que a ação foi realizada usando o recurso Desfazer ou Refazer no Microsoft Word.

Comentários

Representa um objeto documento que foi declarado através do palavra-chave WithEvents num módulo de classe. Para obter informações sobre como utilizar eventos com um objeto Documento , veja Utilizar eventos com o objeto Documento.

Se o parâmetro InUndoRedo for Verdadeiro, nunca altere o XML num documento enquanto os eventos XMLAfterInsert e XMLBeforeDelete estiverem em execução.

Se o parâmetro InUndoRedo for Falso, pode inserir e eliminar o XML no documento, mas tenha cuidado para que os eventos XMLAfterInsert e XMLBeforeDelete não tentem cancelar uns aos outros, causando um ciclo infinito. Você pode impedir que entrará em loop infinito usando um global variável booleano e verifique se o final do manipulador de erros, conforme mostrado no exemplo a seguir.

Dim blnIsXMLDeleteRunning As Boolean 
 
Private Sub Document_XMLBeforeDelete(ByVal DeletedRange As Range, _ 
 ByVal OldXMLNode As XMLNode, ByVal InUndoRedo As Boolean) 
 
 If blnIsXMLDeleteRunning = False Then 
 blnIsXMLDeleteRunning = True 
 'Insert your event code here. 
 Else 
 Exit Sub 
 End If 
End Sub

Exemplo

O exemplo a seguir é executado quando um elemento XML é excluído. Se o elemento contiver texto, uma mensagem será exibida perguntando se o usuário deseja excluir o texto contido no elemento. Se o utilizador responder ao clicar em Não, os conteúdos do elemento são copiados para a Área de Transferência.

Private Sub Document_XMLBeforeDelete(ByVal DeletedRange As Range, _ 
 ByVal OldXMLNode As XMLNode, ByVal InUndoRedo As Boolean) 
 
 Dim intResponse As Integer 
 
 If InUndoRedo = False Then 
 If Not DeletedRange Is Nothing Then 
 intResponse = MsgBox("Are you sure you want to delete the text " _ 
 & vbCrLf & DeletedRange.Text, vbYesNo) 
 
 If intResponse = vbNo Then 
 
 DeletedRange.Copy 
 
 MsgBox "The text has been copied to the Clipboard." & vbCrLf & _ 
 "Position your cursor where you want to insert it, " & _ 
 vbCrLf & " and click Paste on the Edit menu." 
 
 End If 
 End If 
 End If 
End Sub

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.