Compartir a través de


Evento Document.XMLBeforeDelete (Word)

Este evento se produce cuando un usuario elimina un elemento XML de un documento. Si se elimina más de un elemento del documento a la vez (por ejemplo, al cortar y pegar XML), el evento se ejecuta por cada uno de los elementos eliminados.

Sintaxis

expresión. XMLBeforeDelete (DeletedRange, OldXMLNode, InUndoRedo)

Expresión Variable que representa un objeto Document .

Parameters

Nombre Obligatorio/opcional Tipo de datos Descripción
DeletedRange Obligatorio Range El contenido del elemento XML que se va a eliminar. Si sólo hay un elemento se elimina y no está asociado texto, el parámetro DeletedRange no existirá y, por lo tanto, se establecerá en Nothing.
OldXMLNode Obligatorio XMLNode Nodo que se elimina.
InUndoRedo Obligatorio Boolean True indica que la acción se realizó mediante la característica de Deshacer o Rehacer de Microsoft Word.

Comentarios

Representa un objeto Document que se ha declarado mediante la palabra clave WithEvents en un módulo de clase. Para obtener información sobre cómo usar eventos con un objeto Document , consulte Uso de eventos con el objeto Document.

Si el parámetro InUndoRedo es True, nunca cambie el XML de un documento mientras se ejecutan los eventos XMLAfterInsert y XMLBeforeDelete .

Si el parámetro InUndoRedo es False, puede insertar y eliminar el XML en el documento, pero tenga cuidado de que los eventos XMLAfterInsert y XMLBeforeDelete no intenten cancelarse entre sí, lo que provoca un bucle infinito. Los bucles infinitos se pueden evitar mediante el uso de un global variable Boolean y que se comprueba al principio del controlador de errores, como se muestra en el ejemplo siguiente.

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

Ejemplo:

El siguiente ejemplo se ejecuta cuando se elimina un elemento XML. Si el elemento contiene texto, aparece un mensaje que pregunta al usuario si desea eliminar el texto contenido en el elemento. Si el usuario responde haciendo clic en No, el contenido del elemento se copia en el Portapapeles.

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

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.