Shapesコレクション
Shapesコレクションについての解説になります。
目次
Shapesコレクションとは
Shapesコレクションは、指定された文書のすべての Shape オブジェクトのコレクションです。Shape オブジェクトは、オートシェイプ、フリーフォーム、OLE オブジェクト、またはピクチャなどの描画レイヤのオブジェクトを表します。
文書のオートシェイプだけを処理したり、選択した図形だけを処理する場合など、文書の図形のサブセットを処理する場合は、処理する図形を含む ShapeRange コレクションを作成する必要があります。単一の図形または同時に複数の図形を処理する方法については、ここをクリックしてください。
Shapes コレクションを取得するには、Shapes プロパティを使用します。次の使用例は、myDocument のすべての図形を選択します。
Set myDocument = Worksheets(1)
myDocument.Shapes.SelectAll
シートのすべての図形に対して同時にプロパティの削除や設定などを実行する場合は、すべての図形を選択し、ShapeRange プロパティでシートのすべての図形を含む ShapeRange コレクションを作成して、そのコレクションに適切なプロパティまたはメソッドを設定します。
単体の Shape オブジェクトを取得するには、Shapes(index) プロパティを使用します。引数 index には、図形の名前またはインデックス番号を指定します。次の使用例は、myDocument の図形 1 に既定の塗りつぶしのグラデーションを設定します。
Set myDocument = Worksheets(1)
myDocument.Shapes(1).Fill.PresetGradient _
msoGradientHorizontal, 1, msoGradientBrass
Shapes コレクションのサブセットを表す ShapeRange コレクションを取得するには、Shapes.Range(index) プロパティを使用します。引数 index には、図形の名前またはインデックス番号、あるいは複数の図形名またはインデックス番号の配列を指定します。次の使用例は、myDocument の図形 1 および図形 3 に塗りつぶしのパターンを設定します。
Set myDocument = Worksheets(1)
myDocument.Shapes.Range(Array(1, 3)).Fill.Patterned _
msoPatternHorizontalBrick
ワークシートの ActiveX コントロールは、2 つの名前を持ちます。シートを表示したときに名前ボックスで確認できる図形の名前、およびプロパティ ウィンドウの Name プロパティでコントロールのコード名を確認できます。最初にワークシートに追加したコントロールでは、図形の名前とコード名が一致しています。しかし、図形の名前、コード名のどちらかを変更しても、もう片方の名前が一致するように自動的に変更されることはありません。
コントロールのイベント プロシージャの場合は、コントロールのコード名を使います。Shapes または OLEObjects コレクションからコントロールを取得する場合は、コード名ではなく、図形の名前を使ってコントロールを指定します。たとえば、コード名および図形の名前が既定の CheckBox1 というチェック ボックスを追加したと仮定します。コントロールの [プロパティ] ウィンドウで Name プロパティを chkFinished と設定してコード名を変更した場合、イベント プロシージャでは必ずコントロールのコード名を使い、Shapes または OLEObject コレクションからコントロールを取得する場合、次のように CheckBox1 を使います。
Private Sub chkFinished_Click()
ActiveSheet.OLEObjects("CheckBox1").Object.Value = 1
End Sub
近田 伸矢, 植木 悠二, 上田 寛
IEのデータ収集&自動操作のプログラミング本はこの1冊だけ!IEの起動やポップアップウィンドウ、表示を制御する基本的なコードはもちろん、テキストボックスやラジオボタン、表、ハイパーリンクなどのHTML部品を制御する方法など、自動操作に欠かせないノウハウを丁寧に解説。