Создание вложенного списка маркеров в PowerPoint 2007 - PullRequest
1 голос
/ 20 мая 2010

Мы пытаемся создать слайд PowerPoint программно. Мы можем получить маркеры на одном уровне, но игра с вкладками и возвратами строк не работает для вложенных перечислений.

Пока мы получаем:

  • текст 1
  • subtext1
  • подтекст2
  • текст 2

И что мы хотим:

  • текст 1
    • subtext1
    • subtext2
  • текст 2

Есть ли способ контролировать их с помощью C # или VBA?

1 Ответ

3 голосов
/ 20 мая 2010

Сначала получите ссылку на Paragraphs из TextRange2, поскольку каждый маркированный элемент является абзацем (на самом деле 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)

Последние четыре строки вызывают функцию, которая инкапсулирует логику установки отступа «уровень», который влияет на стиль маркеров и текста, и фактический отступ маркеров и текста:

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

Вы, конечно, могли бы реорганизовать это в соответствии с вашими потребностями - например, передать коэффициент отступа (я жестко закодировал его как 40, но ваш пробег может отличаться).

...