Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » 指定した文字列の含まれているスライドを非表示にするマクロ

指定した文字列の含まれているスライドを非表示にするマクロ

対象:PowerPoint2003, PowerPoint2007, PowerPoint2010, PowerPoint2013

「powerpoint マクロ スライド 非表示 条件」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。

何らかの条件によって、スライドを非表示にするマクロを探している方による検索でしょうか。

PowerPointでプレゼンテーション資料を作っているときに、基本的には同じ内容なのだけれど、微妙に異なる資料を作らなければならないことがあります。

例えば、ITシステムの提案用資料の場合、経営層向け資料と、技術者向け資料では、必要な情報が異なります。経営層向け資料は概念レベルのもので、技術者向け資料はもっと具体的な情報も含む必要があります。

そんなプレゼン資料を作るときに、まったく別の2種類の資料を作ることもあるでしょうけれど、その場合2つの資料を管理する手間が増えます。

そこで、作るプレゼンテーションファイルは、経営層向け内容と技術者向け内容の両方を含んだ1つにして、経営層向けのプレゼンテーションを行うときには、細かな時術情報の書かれた技術者向けのスライドを非表示にするという手法が採られることがあります。

[スポンサードリンク]

そんなときに、非表示にするスライドの枚数が数枚ならば手作業で行えばいいわけですが、大量に存在すると面倒です。

そのため、何らかの条件を指定して、その条件に合致するスライドを一気に非表示にしてくれるマクロがあると便利だろうな、と考える方が出てきます。

そんなことを考えた方による検索だろうと推測しています。

技術者向けのスライドには必ず「技術資料」という文字列を入れるというルールでプレゼンテーションファイルを作っておくと、以下のようなマクロで「技術資料」という文字列の含まれるスライドだけを一気に非表示にすることができます。

Sub 指定した文字列の含まれるスライドを非表示にする()

 Const FIND_TXT = "技術資料"

 Dim shp As Shape
 Dim sld As Slide
 
 For Each sld In ActivePresentation.Slides
  
  For Each shp In sld.Shapes
  With shp
   If .HasTextFrame Then
    If InStr(.TextFrame.TextRange.Text, FIND_TXT) _
    > 0 Then
     sld.SlideShowTransition.Hidden = msoTrue
    End If
   End If
  End With
  Next
  
 Next

End Sub

上記のマクロを実行すると「技術資料」という文字列の含まれるスライドが非表示スライドになります。

定数FIND_TXTで、非表示設定するために探す文字列を指定していますので、
 Const FIND_TXT = "技術資料"
他の文字列にしたい場合はこの定数部分を修正してください。

全スライドに対してループを回し、
 For Each sld In ActivePresentation.Slides

各スライドのシェイプごとにループを回し、
  For Each shp In sld.Shapes

もしシェイプにTextFrameが含まれていたら、
  With shp
   If .HasTextFrame Then

指定した文字列が含まれているか調べ、存在していたら、
    If InStr(.TextFrame.TextRange.Text, FIND_TXT) _
    > 0 Then

そのスライドを非表示に設定しています。
     sld.SlideShowTransition.Hidden = msoTrue

関連語句
VBA, Visual Basic for Applications

[スポンサードリンク]

Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » 指定した文字列の含まれているスライドを非表示にするマクロ

「スライドショー」の記事一覧

検索


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