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?

Était-ce utile?

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)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top