VBを使ってExcelのオブジェクト(ShapeRange)をコピー&ペーストするには?

解決


SUGI  2004-08-03 19:12:27  No: 115323  IP: [192.*.*.*]

VBを使ってExcelを操作するにあたり、Set オブジェクト(オブジェクトは
ShapeRange)を使って定義したオブジェクトを、同一エクセルシート上に
コピー&ペーストするにはどのような構文を入力すればよろしいのでしょうか?
また、指定したセル位置にペーストするにはどうしたらよろしいでしょうか?
ちなみに以下のように入力してみましたが、そのようなメソッドはサポートして
いないといわれ、できませんでした。
ご回答よろしくお願いします。

    Dim xlSheet As Excel.WorkSheet
    Dim Test As Excel.ShapeRange
    Set Test = xlSheet.Shapes.Range(Array("Rectangle 1", "Oval _
      2", "Rectangle 3"))
    Test.Copy
    Test.Paste

編集    削除
特攻隊長まるるう  2004-08-04 03:02:58  No: 115324  IP: [192.*.*.*]

一度、Excel のヘルプで ShapeRange コレクションについて
調べていただけませんか?(^^;)

コレクションと言うのは通常 Item とか表現される同じ部品を
格納しておく入れ物のことです。入れ物である ShapeRange 
コレクションに Copy メソッドはありません。Index を指定して
図形オブジェクト(Shape)を特定して下さい。Shape オブジェクトに
Copy メソッドがあります。

マクロを記録されたのだと思いますが、Paste は
    ActiveSheet.Paste
とかじゃなかったですか?WorkSheet オブジェクトですよ?ActiveSheet は。
混同しないで下さい。

プログラム中、『.(ピリオド)』打った時に用意されているメソッドや
プロパティの一覧が出ると思いますが、基本的に、そこに無い物を勝手に
プログラムしても動いてはくれませんよ?。Excel の動作は Excel
側のヘルプを見ながら、オブジェクトブラウザなんかで確認しつつ
プログラムしていきます。その辺りのテクニックを学んで下さい。

編集    削除
SUGI  2004-08-05 01:36:08  No: 115325  IP: [192.*.*.*]

特攻隊長まるるう さん
教えていただいたとおりやってみましたらできました。
ありがとうございました。

編集    削除