「powerpoint vba shapes tableの有無を判定する」
という検索で、このサイト・インストラクターのネタ帳へのアクセスがありました。
PowerPoint VBA(Visual Basic for Applications)で、表が存在しているかどうかを判定するには、どのようなコードを書けばいいのかを探している方による検索です。
簡単なマクロを2つご紹介しておきます。
アクティブなスライドで表の有無を判定するマクロと
アクティブなプレゼンテーションファイルで表の有無を判定するマクロの
2つです。
アクティブなスライドで表の有無を判定するサンプルマクロ
以下のマクロを実行したときに、アクティブなスライド上に表があれば、「表が存在しています。」なければ、「表はありません。」というメッセージが表示されます。
Dim shp As Shape
Dim msg As String
msg = ""
For Each shp In ActiveWindow.Selection.SlideRange.Shapes
If shp.HasTable Then
msg = "表が存在しています。"
Exit For
End If
Next shp
If msg = "" Then msg = "表はありません。"
MsgBox msg
End SubShapeに表が存在するかどうかは、HasTableプロパティでわかりますから、アクティブスライド上の全ShapeにFor Each~Nextループを回して、
For Each shp In ActiveWindow.Selection.SlideRange.Shapes
各Shapeオブジェクトの、HasTableプロパティをチェックしています。
If shp.HasTable Then
アクティブなプレゼンテーションファイルで表の有無を判定するサンプルマクロ
アクティブなプレゼンテーションファイルに、表が存在するかどうかを判定するなら、以下のようなマクロです。
Dim sld As Slide
Dim shp As Shape
Dim msg As String
msg = ""
For Each sld In ActivePresentation.Slides
For Each shp In sld.Shapes
If shp.HasTable Then
msg = msg & sld.SlideNumber & vbCrLf
Exit For
End If
Next shp
Next sld
If msg = "" Then
msg = "表はありません。"
Else
msg = "以下のスライドに表が存在します。" & vbCrLf & msg
End If
MsgBox msg
アクティブなプレゼンテーションファイル内の、全SlideにFor Each~Nextループを回して、
For Each sld In ActivePresentation.Slides
各Slide内で、全Shapeに対するFor Each~Nextループを回し、
For Each shp In sld.Shapes
先のマクロと同様に、ShapeオブジェクトのHasTableプロパティを調べています。
If shp.HasTable Then
- Newer:ハイパーリンクのリンク先URL等を取得するユーザー定義関数
- Older:FindNextで範囲指定をして検索するには?
Home » パワーポイントマクロ・PowerPoint VBAの使い方 » 表・テーブル » 表・Tableの有無を判定するPowerPointマクロ