База знаний 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?

Поделиться