質問

PowerPoint Slide Programmaticalyを作成しようとしています。単一のレベルで弾丸を入手できますが、タブとラインリターンで遊ぶことは、ネストされた列挙では機能しません。

今のところ、私たちは得ます:

  • 文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)

最後の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