「パワーポイント vba テキストボックス 内部の余白」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPointのテキストボックス内部の余白を取得・設定するマクロ・VBA(Visual Basic for Applications)のコードを探している方による検索です。
テキストボックス内部の余白を設定するサンプルマクロ
参考になりそうなサンプルマクロをご紹介しておきます。
With ActiveWindow.Selection
If .Type = ppSelectionNone _
Or .Type = ppSelectionSlides Then
MsgBox "余白を指定したい図形を選択してください。"
Exit Sub
End If
With .ShapeRange.TextFrame
.MarginLeft = 0
.MarginRight = 0
.MarginTop = 0
.MarginBottom = 0
.AutoSize = ppAutoSizeShapeToFitText
.WordWrap = msoFalse
End With '.ShapeRange.TextFrame
End Sub
余白の設定を行っているのは、後半の
With .ShapeRange.TextFrame
.MarginLeft = 0
.MarginRight = 0
.MarginTop = 0
.MarginBottom = 0
の部分です。
TextRameオブジェクトにMarginTop・MarginRight・MarginBottom・MarginLeftというプロパティが存在しています。
PowerPoint側からは、
2013なら
[図形の書式設定]
-[文字のオプション]
-[テキストボックス]欄-
[左余白][右余白][上余白][下余白]で
2010・2007・2003なら
[図形の書式設定]ダイアログ
-[テキストボックス]
-[内部の余白]欄-
[左][右][上][下]で
余白を設定できます。
2013では下図の、
2010・2007では下図の、
場所です。
これに該当するのが、MarginLeft・MarginRight・MarginTop・MarginBottomです。
この4つのプロパティに値を指定すれば、余白が指定された値になります。
テキストに合わせて図形のサイズを調整する・図形内でテキストを折り返す
但し、
With .ShapeRange.TextFrame
.MarginLeft = 0
.MarginRight = 0
.MarginTop = 0
.MarginBottom = 0
End With
というコードだけだと、実際にマクロを動かしたときに、図形・テキストボックスの見た目が変更にならないということもあります。
余白は確かに設定されたのに、図形・テキストボックスの大きさが変更になっていないので、余白が設定されていないかのように見えてしまう可能性があるのです。
そのため、MarginTop・MarginRight・MarginBottom・MarginLeftを指定したあとに、
.AutoSize = ppAutoSizeShapeToFitText
.WordWrap = msoFalse
というコードを入れています。
このうち、
.AutoSize = ppAutoSizeShapeToFitText
は、PowerPoint側で操作するときの[テキストに合わせて図形のサイズを調整する]に該当します。
2013の場合は下図の、
2010・2007の場合は下図の、
オプションです。
テキストに合わせて図形のサイズを調整するオプションを設定する
.AutoSize = ppAutoSizeShapeToFitText
に続く、
.WordWrap = msoFalse
は、PowerPoint側からは[図形内でテキストを折り返す]チェックボックスをOffにする操作に該当します。
2013の場合は下図の、
2010・2007の場合は下図の、
チェックボックスです。
PowerPoint上の[テキストに合わせて図形のサイズを調整する][図形内でテキストを折り返す]、VBAのTextFrameオブジェクトのAutoSizeプロパティ・WordWrapプロパティが、具体的にどういう動きを示すのかは、是非ご自分の手を動かしてご確認ください。
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » テキストボックスの余白を設定するPowerPointマクロ