「powerpoint vba テキストボックス 左揃え」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
テキストボックス内の文字列を左揃えにするVBA(Visual Basic for Applications)のコードを探している方による検索でしょうか。
参考になりそうなマクロを2つご紹介しておきましょう。
アクティブスライドのテキストボックス内文字列を左揃えにするサンプルマクロ
ひとつ目は、アクティブなスライド上に存在するテキストボックス内の文字列を左揃えにするマクロです。
Dim shp As Shape
For Each shp In _
ActiveWindow.Selection.SlideRange.Shapes
If shp.Type = msoTextBox Then
shp.TextFrame.TextRange _
.ParagraphFormat.Alignment = ppAlignLeft
End If
Next shp
End Sub上記のマクロで利用しているオブジェクトモデルの階層関係は下図のとおりです。
基本的な考え方は決して難しくありませんが、階層関係が深いところだけが難点でしょう。
アクティブなスライド上に存在するすべてのShapeをFor Each~Nextループで調べて、
For Each shp In _
ActiveWindow.Selection.SlideRange.Shapes
もしもShapeがテキストボックスだったときに、
If shp.Type = msoTextBox Then
文字列を左揃えにしています。
shp.TextFrame.TextRange _
.ParagraphFormat.Alignment = ppAlignLeft
アクティブなプレゼンテーションの全テキストボックス内文字列を左揃えにするサンプルマクロ
もうひとつは、アクティブなプレゼンテーションファイル上のすべてのスライド上に存在する、すべてのテキストボックス内の文字列を左揃えにするマクロです。
Sub アクティブプレゼンテーションの全テキストボックスを左揃えに()
Dim sld As Slide
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.Type = msoTextBox Then
shp.TextFrame.TextRange _
.ParagraphFormat.Alignment = ppAlignLeft
End If
Next shp
Next sld
こちらのオブジェクトモデルの階層関係は下図のとおりです。
Shapesコレクションオブジェクト以下は、先のマクロとまったく同じです。
アクティブなプレゼンテーションの、すべてのSlideをFor Each~Nextループで処理して、
For Each sld In ActivePresentation.Slides
そのループの中に、先のマクロと同じく全Shapeに対するFor Each~Nextループがあり、
For Each shp In sld.Shapes
先のマクロと同じくテキストボックスだった場合に、左揃えに設定しています。
If shp.Type = msoTextBox Then
shp.TextFrame.TextRange _
.ParagraphFormat.Alignment = ppAlignLeft
End If
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » テキストボックス内の文字列を左揃えにするPowerPointマクロ