2017-01-27 48 views
0

私は表示したり隠したりするオブジェクト(矢印と長方形)を持つPowerPointスライドをいくつか持っています。現時点では私はちょうど今、それは1つの長方形または矢印は、そのテンプレートで削除されなければならないことをすることができVBA PowerPointシェイプの表示と非表示

ActivePresentation.Slides("Slide100").Shapes("Rectangle 99").Visible = False or True 

ActivePresentation.Slides("Slide100").Shapes("Straight Arrow Connector 118").Visible = False or True 

を使用しています。これは、長方形または矢印が見つかりませんでしたので、マクロを実行すると、VBAエラーになります。使用されているすべての矩形と矢印をチェックし、単一の変数を使用する代わりにすべてを非表示にするマクロを書く方法はありますか?

私はこのようなものが見つかりました:

For Each sObject In ActivePresentation.Slides(2).Shapes 
sObject.Visible = False 
Next 

をしかし、私はちょうど、四角形と矢印を非表示にするより多くの何も必要ありません。

敬具 ピーター

答えて

2

出発点として、そのループを取り、その中にいくつかのロジックを適用します。

For Each shp In ActivePresentation.Slides(x).Shapes 
    If InStr(1, shp.Name, "Rectangle") > 0 Then 
     shp.Visible = False 
    End If 
Next shp 

または

For Each shp In ActivePresentation.Slides(x).Shapes 
    If shp.AutoShapeType = msoShapeRectangle Then 
     shp.Visible = False 
    End If 
Next shp 
1

これは、すべての長方形タイプと矢印型のサブセットを非表示になります:二つの例以下の2つの有用な可能性があり形状の性質、autoshapetypename

があります。アクティブプレゼンテーションのすべてのスライドに表示されます。

' PowerPoint VBA Macro 
' Purpose : hide rectangles and shapes across slides 
' Written by : Jamie Garroch of YOUpresent Ltd. http://youpresent.co.uk. 
Sub HideRectanglesAndArrows() 
    Dim oSld As Slide 
    Dim oShp As Shape 
    For Each oSld In ActivePresentation.Slides 
    For Each oShp In oSld.Shapes 
     If oShp.Type = msoAutoShape Then 
     Select Case oShp.AutoShapeType 
      ' Basic Arrows (4) 
      Case msoShapeUpArrow, msoShapeDownArrow, msoShapeLeftArrow, msoShapeRightArrow 
      oShp.Visible = msoFalse 
      ' Double Arrows (2) 
      Case msoShapeUpDownArrow, msoShapeLeftRightArrow 
      oShp.Visible = msoFalse 
      ' Add other arrow types as required 
      ' 
      ' Basic Rectangles (1) 
      Case msoShapeRectangle 
      oShp.Visible = msoFalse 
      ' Rounded Rectangles (4) 
      Case msoShapeRound1Rectangle, msoShapeRound2DiagRectangle, msoShapeRound2SameRectangle, msoShapeRoundedRectangle 
      oShp.Visible = msoFalse 
      ' Snipped Rectangles (4) 
      Case msoShapeSnip1Rectangle, msoShapeSnip2DiagRectangle, msoShapeSnip2SameRectangle, msoShapeSnipRoundRectangle 
      oShp.Visible = msoFalse 
     End Select 
     End If 
    Next 
    Next 
End Sub 

.Nameプロパティまたは位置プロパティ(.Left、.Top)またはサイズプロパティ(.Width、.Height)を使用して、特定のシェイプを削除するロジックを追加できます。もっと精巧にしたい場合(ユーザーはシェイプの名前を変更することができます)、シェイプにタグを追加して、ユーザーが変更できないようにタグを識別し、ロジック内の.Tagsプロパティをチェックするプロシージャを作成できます。

関連する問題