Base de dados de conhecimento KB0073

Como posso descobrir com a VBA se uma forma é usada pelo think-cell?

Cada forma encontrada pelo think-cell é assinalada com um marca. Além das formas do PowerPoint, o think-cell também pode posicionar uma forma especial (contêiner do ActiveDocument) em slides, slides mestres ou layouts personalizados. Esse contêiner do ActiveDocument não está visível e contém informações especiais sobre os objetos do think-cell.
No modelo de objeto do PowerPoint, cada objeto PowerPoint.Shape tem uma coleção de Marcas. O think-cell define uma marca especial thinkcellShapeDoNotDelete para ajudar a identificar as formas. O valor da marca especial é definido como thinkcellActiveDocDoNotDelete para o contêiner do ActiveDocument, para todas as outras formas controladas do think-cell, começa com t.

Exemplo: Como verificar formas do think-cell?

A seguinte função do VBA demonstra como classificar um determinado objeto PowerPoint.Shape usando a marca especial:

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

Você pode usar essa função para identificar todas as formas no slide ativo:

Sub Test()
    Dim oShape As PowerPoint.Shape
    For Each oShape In ActiveWindow.View.Slide.Shapes
        Call CheckShape(oShape)
    Next oShape
End Sub

Observe que a coleção de marcas de cada forma também é copiada sempre que você copia uma forma, p. ex. copiando e colando o think-cell chart. O CheckShape reportará a forma do think-cell para todas as formas que pertencem a um gráfico do think-cell, mesmo que uma forma tenha sido copiada e colada em outra apresentação.