Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » PowerPoint VBAで字下げ・ぶら下げインデントを設定する

PowerPoint VBAで字下げ・ぶら下げインデントを設定する

対象:PowerPoint2007, PowerPoint2010, PowerPoint2013, Windows版PowerPoint2016

PowerPoint VBAでインデントを設定する

「パワーポイント vba テキスト インデント 設定」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

PowerPoint VBA(Visual Basic for Applications)で、文字列のインデントを設置するにはどうすればいいのかを探している方による検索です。

参考になりそうなマクロを2つご紹介しておきます。

[スポンサードリンク]

インデントレベルを設定するサンプルマクロ

「パワーポイント vba テキスト インデント 設定」
という検索をした方が、これを探していた可能性は低いとは思いますが、一つ目はインデントレベルを変更するマクロです。

文字列の入力されているプレースホルダーをを選択しておいて以下のマクロを実行すると、インデントレベルが変更されることを確認できるでしょう。

Sub インデントレベルを設定する()

 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プロパティで、

PowerPoint VBAでインデントを設定する

インデントレベルを設定できます。

字下げインデント・ぶら下げインデントを設定するサンプルマクロ

本命は、こちらのマクロでしょう。字下げインデントやぶら下げインデントを設定するマクロです。

Sub インデントの設定を行う()

 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プロパティでその段落のインデントをポイントで指定し、

PowerPoint VBAでインデントを設定する

ParagraphFormat2オブジェクトのFirstLineIndentプロパティで1行目のインデントをポイントで指定するわけです。

PowerPoint VBAでインデントを設定する

この、
 ShapeRangeオブジェクトの
  TextFrame2オブジェクトの
   TextRange2オブジェクトの
    ParagraphFormat2オブジェクト
という階層関係は、自分でオブジェクトブラウザーを使って確認しない限り納得できないはずです。ParagraphFormat2オブジェクトを取得する方法について書いた記事も参考にしつつ、自分で階層関係図を書いたりしながら根気強く確認してみてください。

プロパティ名を「TextRange2」や「ParagraphFormat2」にしておいてくれれば、こんな苦労はなかったと思うのですが...
[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » PowerPoint VBAで字下げ・ぶら下げインデントを設定する

「TextFrame・TextRange」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.