2009年02月14日

Rectangle

以前、単体のDrawingObjectオブジェクトはない、と書きましたが、DrawingObjectsコレクションには四角形(Rectangle)や楕円(Oval)以外の、三角形とかハートマークとか稲妻といったもの(Excel 2003以前では、名前に「オートシェイプ」と付くもの)もすべて含まれています。
それでは、これらの新しい図形を単体で取得した場合、レガシーオブジェクト的には一体何のオブジェクトになるのでしょうか?

TypeName関数で調べてみると、これらも「Rectangle」であることがわかります。
だとしたら、Rectanglesコレクションにもこれらが含まれていそうなものですが……

実際には、たとえば

ActiveSheet.Rectangles.Select

などとすると、オーソドックスな四角形(Excel 2007でいう「正方形/長方形」)だけが選択されます。
つまり、Rectanglesメソッドで取得できるRectanglesコレクションには、いわゆる「オートシェイプ」組は含まれていないわけです。

なんだかワークシートとExcel4マクロシートの関係(Worksheetオブジェクトとしての扱い)と似たような話ですが、やはりレガシーなオブジェクトにはこうした問題がつきまとうようです。

ちなみに、オートシェイプを含む図形を選択して

TypeName(Selection)

を調べると、「Rectangles」が返ってきます。要するに、Rectanglesメソッドで取得するのでなければ、オートシェイプもRectanglesコレクションとして認められるわけです。
posted by 土屋和人 at 07:34| Comment(0) | TrackBack(0) | Excel
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/26713033
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック