PowerPoint 2007でネストされた弾丸リストの作成
-
03-10-2019 - |
質問
PowerPoint Slide Programmaticalyを作成しようとしています。単一のレベルで弾丸を入手できますが、タブとラインリターンで遊ぶことは、ネストされた列挙では機能しません。
今のところ、私たちは得ます:
- 文1
- subtext1
- subtext2
- テキスト2
そして、私たちが望んでいるのは次のとおりです。
- 文1
- subtext1
- subtext2
- テキスト2
C#またはVBAを使用してこれらを制御する方法はありますか?
解決
最初に、への参照を取得します 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)
最後の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として強調しましたが、走行距離は異なる場合があります)。
所属していません StackOverflow