「ビジネスパーソンのためのExcelマクロ入門講座」を受講いただいた方から、なかなか面白いご質問をいただきました。
「PowerPointで全スライドに禁則処理の設定をマクロで行うにはどうすればいいのか?」
といった趣旨のご質問です。
スライド内に、グラフや表が存在しているときにどうすればいいのかが難しかったようです。
VBA(Visual Basic for Applications)で以下のようなマクロを作ってみました。
Sub 全スライドの全図形に禁則処理を設定する()
Dim sld As Slide
Dim shp As Shape
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
With shp
If .HasTextFrame = msoTrue Then
.TextFrame. _
TextRange. _
ParagraphFormat. _
FarEastLineBreakControl = msoTrue
End If
End With
Next shp
Next sld
全体の構造としては、
すべてのSlideオブジェクトにループ処理を行う中で、
For Each sld In ActivePresentation.Slides
すべてのShapeオブジェクトにループ処理を行っています。
For Each shp In sld.Shapes
この入れ子になったループ処理の中で、ParagraphFormatオブジェクトのFarEastLineBreakControlプロパティをmsoTrueに設定してやればOKです。
ですが、Shapeオブジェクトが、テキストボックスでないときや、プレースホルダだけれどテキストではないコンテンツのときに、この処理ができません。
そのため、まずShapeオブジェクトのHasTextFrameプロパティを調べ、
If .HasTextFrame = msoTrue Then
TextFrameの存在するときだけ、
.TextFrame. _
TextRange. _
ParagraphFormat. _
FarEastLineBreakControl = msoTrue
禁則処理を設定しています。
この禁則処理を設定している部分は、本当は、
.TextFrame.TextRange.ParagraphFormat.FarEastLineBreakControl = msoTrue
と一行なのですが、PowerPointでは階層が深く読みづらいので「 _」(スペース・アンダバー)を入れて改行しています。
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » すべてのスライドに禁則処理を設定するPowerPointマクロ