База знаний KB0073
Как с помощью VBA выяснить, используется ли фигура в think-cell?
Каждая фигура, обрабатываемая think-cell, помечается тегом. В дополнение к фигурам PowerPoint надстройка think-cell может также разместить специальную фигуру (контейнер ActiveDocument) на слайдах, образцах слайдов или пользовательских макетах. Этот контейнер ActiveDocument невидим и содержит специальную информацию об объектах think-cell.
В объектной модели PowerPoint каждый объект
PowerPoint.Shape
содержит коллекцию Tags
. Для идентификации фигур think-cell задает специальный тег thinkcellShapeDoNotDelete
. Значение специального тега для контейнера ActiveDocument равно thinkcellActiveDocDoNotDelete
, для всех других управляемых think-cell фигур тег начинается с символа t
.Пример. Как определить фигуру, управляемую think-cell?
В следующей функции VBA демонстрируются способы классификации объекта PowerPoint.Shape
с помощью специального тега:
Sub CheckShape(oShape As PowerPoint.Shape)
Dim str As String
str = oShape.Tags.Item(Name:="thinkcellShapeDoNotDelete")
If (str = "" Or Left$(str, 1) <> "t") Then
MsgBox "PowerPoint shape"
Else
If str = "thinkcellActiveDocDoNotDelete" Then
MsgBox "think-cell ActiveDocument"
Else
MsgBox "think-cell shape"
End If
End If
End Sub
Вы можете использовать эту функцию для идентификации всех фигур на активном слайде:
Sub Test()
Dim oShape As PowerPoint.Shape
For Each oShape In ActiveWindow.View.Slide.Shapes
Call CheckShape(oShape)
Next oShape
End Sub
Обратите внимание на то, что коллекции тэгов каждой фигуры также копируются при копировании фигуры, например, копировании и вставке диаграммы think-cell. CheckShape
обозначит фигуру как фигуру think-cell shape
, которая была частью диаграммы think-cell, даже если она была скопирована и вставлена в другую презентацию
Возможно, вам стоит прочитать статью KB0107: Как скопировать и вставить диаграмму в коде VBA?