Erfassen von und Reagieren auf Ereignisse im Datenspeicher

Der Client kann auf Änderungen an einem Knoten oder einem Knoten und allen untergeordneten Knoten warten und auf diese reagieren. Ein Add-In kann auf die folgenden Ereignisse reagieren.

In der CustomXMLParts-Auflistung:

  • StreamAfterAdd ermöglicht es einem Client, zu reagieren, nachdem dem Dokument ein neuer Speicher hinzugefügt wurde.
  • StreamBeforeDelete ermöglicht es einem Client, zu reagieren, bevor ein Speicher aus dem Dokument entfernt wird.
  • StreamAfterLoad ermöglicht es einem Client, nach dem Laden eines Speicherelements mit XML zu reagieren.

Im CustomXMLPart-Objekt:

  • NodeAfterInsert ermöglicht es einem Client, zu reagieren, nachdem einem Speicher ein neuer Knoten hinzugefügt wurde. Wenn der hinzugefügte Knoten eine Unterstruktur enthält, wird das Ereignis nur einmal für den obersten Knoten ausgelöst.
  • NodeAfterDelete ermöglicht es einem Client, nach dem Löschen eines Knotens zu reagieren. Wenn der gelöschte Knoten eine Unterstruktur enthält, wird das Ereignis nur einmal für den obersten Knoten ausgelöst.
  • NodeAfterReplace ermöglicht es einem Client, zu reagieren, nachdem ein XML-Knoten im Speicher ersetzt wurde.

Beispiel

Angenommen, es liegen eine XML-Datei, C:\test.xml, und zwei Text-Inhaltssteuerelemente vor. Die XML-Datei sieht folgendermaßen aus:

<?xml version="1.0" standalone="no"?>  
<root xmlns="urn:test">  
  <a>NodeA</a>  
  <b>NodeB</b>  
</root>

Ein leistungsfähiges Feature, das die XML-Zuordnung bietet, besteht darin, dass ein zugeordnetes Text-Inhaltssteuerelement sofort aktualisiert wird, wenn ein Benutzer ein anderes Text-Inhaltssteuerelement aktualisiert. Dazu werden Ereignisse verwendet. Erstellen Sie eine Methode mit Ereignissen, und führen Sie sie aus.

Dim WithEvents objStream As CustomXMLPart 
 
Sub Demo() 
  Set objStream = ThisDocument.CustomXMLParts(4) 
End Sub

Wenn Sie die Demo-Unterroutine ausführen, wird die Variable objStream zum Lauschen auf Ereignisse eingerichtet.

Denken Sie daran, dass das Dokument aus dem vorherigen Szenario über zwei Textinhaltssteuerelemente verfügt: eine Daten, die dem <a> Knoten zugeordnet ist, und die anderen Daten, die dem Knoten "b" zugeordnet sind. Angenommen, Sie möchten Ereignisse so einrichten, dass der Knoten "b" automatisch etwas ausführt, wenn der Text im <a> Knoten geändert wird. Die folgende objStream_NodeAfterReplace Ereignisunterroutine erreicht dies.

Private Sub objStream_NodeAfterReplace( _ 
        ByVal OldNode As Office.CustomXMLNode, _ 
        ByVal NewNode As Office.CustomXMLNode, _ 
        ByVal InUndoRedo As Boolean) 
 
    ' Check if NewNode, which is the node after the change, is 
    ' the "a" node by checking the BaseName of its ParentNode 
  If NewNode.ParentNode.BaseName = "a" Then 
    objStream.DocumentElement.LastChild.Text = "You changed a!" 
  End If 
 
End Sub

Diese Routine wird ausgelöst, nachdem der Benutzer den Text im ersten Textinhaltssteuerelement geändert hat, das dem Element <a>zugeordnet ist. Wenn sich der Text im <a> Knoten ändert, wird der Text des letzten untergeordneten Elements im benutzerdefinierten XML-Teil aktualisiert. Da der Stream nur über zwei Knoten verfügt, ist der letzte Knoten der Knoten "b". Nachdem der Text des Knotens aktualisiert wurde, wird der aktualisierte Text von "You changed a!" automatisch im zweiten Textinhaltssteuerelement angezeigt.

Zwar handelt es sich hier um ein einfaches Beispiel, dennoch macht es deutlich, was Sie mit Ereignissen, XML-Zuordnung und Inhaltssteuerelementen bewerkstelligen können. Verwenden Sie Code wie diesen, um text in einem Dokument zu aktualisieren, wenn ein Textinhaltssteuerelement geändert wird. Dies ist sehr hilfreich, da keine Voraussetzungen bezüglich der Formatierung des Dokuments erfüllt sein müssen und die Formatierung auch nicht berührt wird. Stattdessen wird das dem Dokument zugewiesene Schema verwendet.

Siehe auch

Support und Feedback

Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.