Knowledge base KB0073

Come si fa a sapere se una forma è utilizzata da think-cell con la funzione VBA?

Ogni forma incontrata da think-cell viene contrassegnata con un tag. In aggiunta alle forme di PowerPoint, think-cell potrebbe anche posizionare una forma speciale (ActiveDocument container) su diapositive, schemi diapositive o layout personalizzato. ActiveDocument container non è visibile e contiene informazioni speciali sugli oggetti think-cell.
Nel modello a oggetti di PowerPoint ogni oggetto PowerPoint.Shape ha un insieme di Tag e think-cell imposta uno speciale tag thinkcellShapeDoNotDelete come ausilio per identificare le forme. Il valore di questo tag speciale è impostato su thinkcellActiveDocDoNotDelete per ActiveDocument container, per tutte le altre forme controllate di think-cell inizia con t.

Esempio: Come si controllano le forme di think-cell?

La seguente funzione VBA dimostra in che modo viene classificato un determinato oggetto PowerPoint.Shape usando il tag speciale:

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

È possibile usare questa funzione per identificare tutte le forme sulla diapositiva attiva:

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

notare che quando si copia una forma, ad esempio tramite copia e incolla del grafico di think-cell, viene copiato anche l'insieme di tag della forma stessa. CheckShape riporterà think-cell shape per tutte le forme che hanno fatto parte di un grafico think-cell, anche se una forma è stata copiata e incollata in un'altra presentazione.