Удаление данных из хранилища данных при удалении элемента управления содержимым
Вы можете удалить элемент управления содержимым, вызвав метод Delete объекта ContentControl . Например, следующий код удаляет элемент управления содержимым с заголовком MyTitle.
ActiveDocument.ContentControls.Item("MyTitle").Delete
Вы также можете удалить один узел, вызвав метод Delete объекта CustomDataXMLNode , который требуется удалить. Вы можете удалить всю настраиваемую XML-часть, вызвав метод Delete объекта CustomXMLPart , который требуется удалить.
Дополнительные сведения об элементах управления содержимым см. в разделе Orking with Content Controls. В этих примерах используются следующие объекты:
CustomXMLPart (основная объектная модель системы Microsoft Office)
CustomXMLParts (системная объектная модель Microsoft Office)
Пример 1
Первый пример кода создает элемент управления содержимым и задает сопоставление XML для элемента управления содержимым.
Создайте допустимый пользовательский XML-файл, сохраните его на жестком диске и добавьте хранилище данных в документ, содержащий сведения, с которыми вы хотите сопоставить.
Предположим, что элемент управления содержимым сопоставлен со следующим примером пользовательского XML-файла.
<?xml version="1.0" encoding="utf-8" ?>
<tree>
<fruit>
<fruitType>peach</fruitType>
<fruitType>pear</fruitType>
<fruitType>banana</fruitType>
</fruit>
</tree>
Теперь предположим, что элемент управления содержимым сопоставлен с <узлом fruitType> предыдущей пользовательской XML-части.
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 и обратная связь.