Étant donné une diapositive, comment peut-on savoir si tous les espaces réservés de disposition de diapositives sont utilisés dans PowerPoint? Est-il possible d'empêcher l'utilisation automatique d'un espace réservé lors de l'ajout d'une image si ce paramètre n'est pas utilisé?Comment déterminer un espace réservé est utilisé?
Répondre
Vous devez parcourir tous les espaces réservés de la diapositive, déterminer le type de chacun et vérifier si le format est correct. Il existe 18 PpPlaceholderType
, vous devez donc les configurer tous, mais voici un exemple de ce que vous pouvez faire pour vérifier si un espace réservé est utilisé.
Sub CheckPlaceholders()
Dim ap As Presentation: Set ap = ActivePresentation
Dim sl As Slide: Set sl = ap.Slides(2)
Dim shs As Shapes: Set shs = sl.Shapes
Dim ph As Placeholders: Set ph = shs.Placeholders
Dim p As Shape
For Each p In ph
Select Case p.Type
Case PpPlaceholderType.ppPlaceholderHeader
If p.TextFrame.HasText Then
Debug.Print "This Placeholder is in use"
End If
Case PpPlaceholderType.ppPlaceholderChart
If p.HasChart Then
Debug.Print "This Placeholder is in use"
End If
End Select
Next
End Sub
Pour insérer, par exemple, une photo et pas il arrive dans un espace réservé, la seule façon que j'ai trouvé est de créer une boucle pour ajouter des images jusqu'à ce que l'un d'eux est d'un espace réservé, puis supprimer ceux déjà insérés.
Sub AddPicture()
Dim pic As String
pic = "C:\Users\Me\Desktop\beigeplum.jpg"
Dim ap As Presentation: Set ap = ActivePresentation
Dim sl As Slide: Set sl = ap.Slides(1)
Dim sh As Shape
Do
Set sh = sl.Shapes.AddPicture(pic, msoFalse, msoTrue, 1, 1)
sh.Tags.Add "MYPICTURE", 0
Loop Until sh.Type <> 14
Dim p As Shape
For Each p In sl.Shapes
If p.Type = 14 Then
If p.Tags.count > 0 Then
If p.Tags.Name(1) = "MYPICTURE" Then
p.Delete
End If
End If
End If
Next
End Sub
Une solution plus élégante pour savoir si un espace réservé contient un élément ou non, et qui est générique pour tous les types:
if (selectedSlide.Shapes.Placeholders[i].PlaceholderFormat.ContainedType != Microsoft.Office.Core.MsoShapeType.msoAutoShape)
Un espace réservé est de ContainedType msoAutoShape si rien n'est placé à l'intérieur l'espace réservé. Lorsque vous insérez par exemple une image dans l'espace réservé, le type change en type d'élément, dans ce cas msoPicture.
Office ajoute automatiquement des éléments au premier espace réservé disponible (ajouté en premier dans le fichier principal) ou, pour les images, à la priorité ppPlaceholderPicture.
cela ne répond qu'à une partie de la question, à l'époque j'étais plus préoccupé par la façon de forcer le bureau à ne pas ajouter l'image dans un espace réservé – Dudi
Parfois, ils sont encore autoshape même s'ils ont du contenu. – BrainSlugs83
- 1. Comment avoir un lien dans un espace réservé ouvrir un ModalPopup dans un espace réservé différent?
- 2. Comment utiliser listitemCollection comme espace réservé
- 3. Espace réservé pour un contrôle dans silverlight
- 4. Créer un espace réservé incrémentiel dans NHaml
- 5. Espace réservé excessif sur SQL Server
- 6. Ajouter espace réservé HTML dans Zend_Form
- 7. Création d'un espace réservé div superposable dynamiquement
- 8. propriétés de printemps (propriété espace réservé) Autowiring
- 9. Internationalisation du programme python/django: comment implémenter un espace réservé dans un fichier .po?
- 10. Comment définir un espace réservé pour un contrôle Image (pendant le téléchargement)?
- 11. CS0118: 'MT.Flag.UmbracoTests' est un 'espace de nom' mais est utilisé comme un 'type'
- 12. Comment déterminer un fichier ruby est utilisé comme lib ou un script?
- 13. fichier Android supprimer laisse espace réservé vide dans la Galerie
- 14. "espace réservé zéro" pour le compteur de travail as3
- 15. Espace réservé ASP.NET WebForms pour NVelocity View Engine
- 16. Espace réservé "Current Type" dans les types génériques C#?
- 17. Comment définir la valeur d'un objet JFormattedTextField avec un caractère espace réservé?
- 18. HTTPSConnection déterminer quel fournisseur sous-jacent est utilisé
- 19. Est-il possible de déterminer si un proxy HTTPS est utilisé juste en regardant le certificat?
- 20. Quelle est la différence entre un paiement réservé et un paiement non réservé?
- 21. Puis-je utiliser un espace réservé de propriété avec Spring EL?
- 22. Espace disque? (utilisé/gratuit/total) comment l'obtenir? en C++
- 23. Comment échapper un mot réservé dans Oracle?
- 24. Comment échapper un mot réservé dans Delphi?
- 25. Comment déterminer si un pthread est actif?
- 26. Comment déterminer si un gif est animé?
- 27. Comment déterminer si objet est un NSNumber
- 28. ASP.NET Peut-il alimenter un espace réservé de contenu unique à partir de plusieurs endroits?
- 29. asp.net/ajax contrôle personnalisé basé sur un modèle, affichant/masquant des éléments avec espace réservé
- 30. Déterminer un lecteur est SAN
Je connaissais cette solution, je cherchais une solution plus élégante. En ce qui concerne l'utilisation automatique de l'espace réservé, essayez simplement d'ajouter un objet à une diapositive avec disposition - ppLayoutObject say via activeSlide.Shapes.AddPicture (...); – Dudi
Oui, depuis PPT2007 tout est devenu un peu bizarre avec les espaces réservés. La solution que vous avez mentionnée dans votre autre article est une façon de le faire, mais vous avez raison, elle a des inconvénients lorsque l'ancien slidelayout est réappliqué. La seule façon que j'ai trouvée est un peu hacky. Voir mise à jour ci-dessus. –
Sur l'utilisation de l'espace réservé, c'est à peu près aussi élégant qu'il obtient :( –