KB0073 : Comment savoir avec VBA si une forme est utilisée par thinkcell ?
Toutes les formes détectées par thinkcell sont marquées par une balise. Outre les formes PowerPoint, thinkcell 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 thinkcell. Dans le modèle d’objet PowerPoint, chaque objet PowerPoint.Shape présente une série de Tags. thinkcell 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 thinkcell, elle commence par t.
Exemple : Comment vérifier la présence de formes thinkcell ?
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 "thinkcell ActiveDocument"
Else
MsgBox "thinkcell 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 thinkcell. CheckShape signalera thinkcell shape pour toutes les formes qui ont fait partie d’un graphique thinkcell, 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 thinkcell dans mon code VBA ?