Création d'une liste à puces imbriquées dans PowerPoint 2007
-
03-10-2019 - |
Question
Nous essayons de créer une diapositive PowerPoint programmaticaly. Nous pouvons obtenir des balles sur un seul niveau, mais en jouant avec des onglets et retours à la ligne ne fonctionne pas pour les énumérations imbriquées.
Pour l'instant, nous obtenons:
- 1 texte
- subtext1
- subtext2
- texte 2
Et ce que nous voulons est:
-
texte
- 1
- subtext1
- subtext2
- texte 2
Y at-il un moyen de contrôler ces utilisant C # ou VBA?
La solution
Tout d'abord, obtenir une référence au Paragraphs
du TextRange2
, comme chaque élément est un paragraphe bulleted (vraiment un TextRange2
).
Dim pres As Presentation
Set pres = Application.ActivePresentation
Dim slide As slide
Set slide = pres.Slides(2)
Dim shapes As shapes
Set shapes = slide.shapes
Dim textShape As Shape
Set textShape = shapes(2)
Dim textFrame As TextFrame2
Set textFrame = textShape.TextFrame2
Dim textRng As TextRange2
Set textRng = textFrame.textRange
Dim p As TextRange2
Set p = textRng.Paragraphs
SetIndent 1, p.Item(1)
SetIndent 2, p.Item(2)
SetIndent 2, p.Item(3)
SetIndent 1, p.Item(4)
Les quatre dernières lignes appellent une fonction qui encapsule la logique « niveau » de réglage du tiret qui affecte le style des puces et le texte, et le retrait effectif des puces et le texte:
Private Function SetIndent(ByVal level As Integer, ByRef p As TextRange2)
p.ParagraphFormat.IndentLevel = level
p.ParagraphFormat.FirstLineIndent = 40
p.ParagraphFormat.LeftIndent = level * 40
End Function
Vous pourriez certainement factoriser cela pour répondre à vos besoins -. Comme le passage du facteur de tiret (je Hardcoded comme 40, mais votre kilométrage peut varier)