Base de connaissances KB0073
Comment savoir avec VBA si une forme est utilisée par think-cell ?
Toutes les formes détectées par think-cell sont marquées par une balise. Outre les formes PowerPoint, think-cell peut également placer une forme spéciale (conteneur ActiveDocument) sur les diapositives, les masques des diapositives ou les dispositions personnalisées. Ce conteneur ActiveDocument n'est pas visible et contient des informations spéciales à propos des objets think-cell.
Dans le modèle d’objet PowerPoint, chaque objet
PowerPoint.Shape
présente une série de Tags
. think-cell définit la balise spéciale thinkcellShapeDoNotDelete
afin d’identifier ces formes. La valeur de cette balise spéciale est définie sur thinkcellActiveDocDoNotDelete
pour le conteneur ActiveDocument ; pour toutes les autres formes contrôlées par think-cell, elle commence par t
.Exemple : Comment vérifier la présence de formes think-cell ?
La fonction VBA suivante illustre la façon de classifier un objet PowerPoint.Shape
donné à l’aide de la balise spéciale :
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
Vous pouvez utiliser cette fonction pour identifier toutes les formes sur la diapositive active :
Sub Test()
Dim oShape As PowerPoint.Shape
For Each oShape In ActiveWindow.View.Slide.Shapes
Call CheckShape(oShape)
Next oShape
End Sub
Veuillez noter que la collection de balises de chaque forme est également copiée chaque fois que vous copiez une forme, par exemple en copiant et en collant le graphique think-cell. CheckShape
signalera think-cell shape
pour toutes les formes qui ont fait partie d’un graphique think-cell, même si une forme a été copiée et collée dans une autre présentation.
Vous pourriez également être intéressé par l’article KB0107 : Comment copier-coller des graphiques think-cell dans mon code VBA ?