我们正在尝试创建PowerPoint幻灯片编程。我们可以在一个级别上获得子弹,但是使用标签和线路返回对嵌套枚举不起作用。

现在我们得到:

  • 文本1
  • subtext1
  • subtext2
  • 文字2

我们想要的是:

  • 文本1
    • subtext1
    • subtext2
  • 文字2

有没有办法使用C#或VBA来控制它们?

有帮助吗?

解决方案

首先,请参考 ParagraphsTextRange2, ,因为每个项目符号是一个段落(真的是 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,但您的里程可能会有所不同)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top