「powerpoint マクロ スライド 非表示 条件」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
何らかの条件によって、スライドを非表示にするマクロを探している方による検索でしょうか。
PowerPointでプレゼンテーション資料を作っているときに、基本的には同じ内容なのだけれど、微妙に異なる資料を作らなければならないことがあります。
例えば、ITシステムの提案用資料の場合、経営層向け資料と、技術者向け資料では、必要な情報が異なります。経営層向け資料は概念レベルのもので、技術者向け資料はもっと具体的な情報も含む必要があります。
そんなプレゼン資料を作るときに、まったく別の2種類の資料を作ることもあるでしょうけれど、その場合2つの資料を管理する手間が増えます。
そこで、作るプレゼンテーションファイルは、経営層向け内容と技術者向け内容の両方を含んだ1つにして、経営層向けのプレゼンテーションを行うときには、細かな時術情報の書かれた技術者向けのスライドを非表示にするという手法が採られることがあります。
そんなときに、非表示にするスライドの枚数が数枚ならば手作業で行えばいいわけですが、大量に存在すると面倒です。
そのため、何らかの条件を指定して、その条件に合致するスライドを一気に非表示にしてくれるマクロがあると便利だろうな、と考える方が出てきます。
そんなことを考えた方による検索だろうと推測しています。
技術者向けのスライドには必ず「技術資料」という文字列を入れるというルールでプレゼンテーションファイルを作っておくと、以下のようなマクロで「技術資料」という文字列の含まれるスライドだけを一気に非表示にすることができます。
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
上記のマクロを実行すると「技術資料」という文字列の含まれるスライドが非表示スライドになります。
定数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
- Newer:Excel VBAで改行以降を削除する・改行までの文字列にする-InStr関数/Left関数
- Older:12/1(日)10:30~ Excelマクロ入門講座を開催しました(女性5 男性2)
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » スライドショー » 指定した文字列の含まれているスライドを非表示にするマクロ