Shape オブジェクト
Microsoft Excel Visual Basic のリファレンス |
Shape オブジェクト
複数のオブジェクト Shape 複数のオブジェクト |
オートシェイプ、フリーフォーム、OLE オブジェクト、またはピクチャなど描画レイヤのオブジェクトを表します。Shape オブジェクトは、Shapes コレクションのメンバーです。Shapes コレクションは、文書のすべての図形を表します。
メモ 図形を表すオブジェクトは 3 つあります。文書のすべての図形を表す Shapes コレクション、文書の図形セットである図形範囲 (文書の図形 1 と図形 4、および選択したすべての図形など) を表す ShapeRange コレクション、および文書の単一の図形を表す Shape オブジェクトです。複数の図形、および選択範囲内の図形を同時に処理するには、ShapeRange コレクションを使用します。単一の図形または同時に複数の図形を処理する方法の詳細については、ここをクリックしてください。
使い方
次の方法について、以下で説明します。
- 既存の図形を取得する
- 選択範囲内の図形を取得する
- コネクタの両端が接続された図形を取得する
- 新しく作成したフリーフォームを取得する
- グループ内から単一の図形を取得する
- 新しく形成した図形グループを取得する
既存の図形を取得する
図形を表す Shape オブジェクトを取得するには、Shapes(index) プロパティを使用します。引数 index には、図形名またはインデックス番号を指定します。次の使用例は、myDocument の Rectangle 1 という名前の図形 1 を水平に反転します。
Set myDocument = Worksheets(1)
myDocument.Shapes(1).Flip msoFlipHorizontal
myDocument.Shapes("Rectangle 1").Flip msoFlipHorizontal
Shapes コレクションに図形を追加すると、各図形には既定の名前が割り当てられます。図形に任意の名前を付けるには、Name プロパティを使用します。次の使用例は、myDocument に四角形を追加し、Red Square という名前を付け、前景色と線スタイルを設定します。
Set myDocument = Worksheets(1)
With myDocument.Shapes.AddShape(msoShapeRectangle, _
144, 144, 72, 72)
.Name = "Red Square"
.Fill.ForeColor.RGB = RGB(255, 0, 0)
.Line.DashStyle = msoLineDashDot
End With
選択範囲内の図形を取得する
選択範囲内の図形を表す Shape オブジェクトを取得するには、Selection.ShapeRange(index) プロパティを使用します。引数 index には、図形名またはインデックス番号を指定します。次の使用例は、選択範囲内に少なくとも 1 つの図形があると仮定して、アクティブ ウィンドウの最初の図形に塗りつぶしを設定します。
ActiveWindow.Selection.ShapeRange(1).Fill.ForeColor.RGB = _
RGB(255, 0, 0)
コネクタの両端が接続された図形を取得する
コネクタが接続された図形の 1 つを表す Shape オブジェクトを取得するには、BeginConnectedShape または EndConnectedShape プロパティを使用します。
新しく作成したフリーフォームを取得する
新しいフリーフォームのジオメトリを定義するには、BuildFreeform メソッドと AddNodes メソッドを使用し、フリーフォームを作成し、それを表す Shape オブジェクトを取得するには、ConvertToShape メソッドを使用します。
グループ内から単一の図形を取得する
グループ化した図形内の単一の図形を表す Shape オブジェクトを取得するには、GroupItems(index) プロパティを使用します。引数 index には、グループ内の図形名またはインデックス番号を指定します。
新しく形成した図形グループを取得する
図形範囲をグループ化し、新しく形成したグループを表す単体の Shape オブジェクトを取得するには、Group メソッドまたは Regroup メソッドを使用します。グループを形成すると、他の図形を処理するのと同じようにグループを処理できます。