「パワーポイント vba テキスト インデント 設定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPoint VBA(Visual Basic for Applications)で、文字列のインデントを設置するにはどうすればいいのかを探している方による検索です。
参考になりそうなマクロを2つご紹介しておきます。
インデントレベルを設定するサンプルマクロ
「パワーポイント vba テキスト インデント 設定」
という検索をした方が、これを探していた可能性は低いとは思いますが、一つ目はインデントレベルを変更するマクロです。
文字列の入力されているプレースホルダーをを選択しておいて以下のマクロを実行すると、インデントレベルが変更されることを確認できるでしょう。
With ActiveWindow.Selection
If .Type = ppSelectionNone _
Or .Type = ppSelectionSlides Then Exit Sub
With .ShapeRange.TextFrame.TextRange
.IndentLevel = 5
End With
End With
End Sub上記のとおり、TextRangeオブジェクトのIndentLevelプロパティで、
インデントレベルを設定できます。
字下げインデント・ぶら下げインデントを設定するサンプルマクロ
本命は、こちらのマクロでしょう。字下げインデントやぶら下げインデントを設定するマクロです。
With ActiveWindow.Selection
If .Type = ppSelectionNone _
Or .Type = ppSelectionSlides Then Exit Sub
With .ShapeRange.TextFrame2.TextRange.ParagraphFormat
.LeftIndent = 48
.FirstLineIndent = 48
End With
End With
End Sub図形を選択しておいて上記のマクロを実行すると、その図形の左インデント(.LeftIndent)が48ポイント(約1.69cm)に設定され、1行目(.FirstLindeIndent)は更に48ポイント(約1.69cm)のインデントが行われます。
LeftIndentプロパティの値はそのままで、FirstLineIndentプロパティの値を「0」や「-48」にしてテストしてみると、LeftIndentとFirstLineIndentの関係がわかるでしょう。
このマクロの注意点は、
With .ShapeRange.TextFrame2.TextRange.ParagraphFormat
というオブジェクト式です。
このオブジェクト式を、ぼんやり眺めてしまうと、
ShapeRangeオブジェクトの
TextFrame2オブジェクトの
TextRangeオブジェクトの
ParagraphFormatオブジェクト
と思ってしまいがちですが、そうではありません。
上記のマクロで利用している「ShapeRange.TextFrame2.TextRange.ParagraphFormat」というオブジェクト式が返すのは、
ShapeRangeオブジェクトの
TextFrame2オブジェクトの
TextRange2オブジェクトの
ParagraphFormat2オブジェクト
です。
ParagraphFormat2オブジェクトのLeftIndentプロパティでその段落のインデントをポイントで指定し、
ParagraphFormat2オブジェクトのFirstLineIndentプロパティで1行目のインデントをポイントで指定するわけです。
この、
ShapeRangeオブジェクトの
TextFrame2オブジェクトの
TextRange2オブジェクトの
ParagraphFormat2オブジェクト
という階層関係は、自分でオブジェクトブラウザーを使って確認しない限り納得できないはずです。ParagraphFormat2オブジェクトを取得する方法について書いた記事も参考にしつつ、自分で階層関係図を書いたりしながら根気強く確認してみてください。
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » PowerPoint VBAで字下げ・ぶら下げインデントを設定する