Home » パワーポイントマクロ・PowerPoint VBAの使い方 » TextFrame・TextRange » すべてのスライドに禁則処理を設定するPowerPointマクロ

すべてのスライドに禁則処理を設定するPowerPointマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

すべてのスライドに禁則処理を設定するマクロ

「ビジネスパーソンのための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

End Sub

全体の構造としては、
すべての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マクロ

「TextFrame・TextRange」の記事一覧

検索


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

.