- 締切済み
Excel VBA グラフを任意sheetに移動させるには?
アクティブになっているsheetのグラフを参照し、 それを『まとめ』sheetに移動して張り付ける。 現在 ★マークのところでエラーになっています。 オブジェクトは、このメソッドをサポートしていません…と、これは何のエラーになるのでしょうか? アドバイスお願い致します. Sub test() Dim str As String ★str = ActiveSheet.ChartObjects.Name 'strにグラフ名を代入 ←不具合中… Sheets("まとめ").Activate '---sheet 『まとめ』を アクティブにする ActiveSheet.ChartObjects(str).Activate ActiveChart.Paste End Sub
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 >オブジェクトは、このメソッドをサポートしていません…と、これは何のエラーになるのでしょうか? ChartObjects だけですと、オブジェクトのコレクションだから、固有の名前を持たないということではありませんか? ちょっと手直ししてみました。 Sub test2() Dim str As String str = ActiveSheet.ChartObjects(1).Name ActiveSheet.ChartObjects(str).Copy Sheets("まとめ").Paste End Sub #1 さんのおっしゃるとおり、シートに1個しかない時は、インデックス は、「1」でよいのですが。 早い話、以下でもよいわけですね。(^^; ActiveChart.ChartObjects.Copy Sheets("まとめ").Paste
- nagare
- ベストアンサー率33% (280/831)
#1です さらに調べていたら間違だったので、訂正します グラフの名前を取得するサンプルがありました http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=19136&rev=&no=0 そもそもグラフの名前の取得するのですから、ActiveSheetではなくActiveChartと思います
- nagare
- ベストアンサー率33% (280/831)
ちょっと調べただけなんですけど、グラフって複数枚作れるじゃないですか だから ChartObjects(対象とするグラフの番号).Nama となるようです (1枚しかないのなら1) 参考になれば幸いです
補足
>オブジェクト… エラー部分は解消されました。 補足で教えてもらいたいのですが… ●Sheets("まとめ").Paste 部分を改造して、 貼付先のsheet名を(今回はまとめ)選択しつつ、貼付位置のセルを指定して貼付を行う事は可能でしょうか? 以下が現在処理している全体ソースです。 Sub まとめ用() Dim ws As Worksheet Dim str As String Dim i As Integer i = 1 Sheets("sheet名").Select ActiveSheet.Next.Select For Each ws In ActiveWorkbook.Sheets If ws.Name = "まとめ" Then Else str = ActiveSheet.ChartObjects(1).Name ActiveSheet.ChartObjects(str).Copy ●Range("A2").Offset(i).Select Sheets("まとめ").Paste On Error Resume Next ActiveSheet.Next.Select ▲i = i + 20 End If Next End Sub <現在の不具合状況> ●部分のセル参照の効果がなく、グラフの貼付2回目以降は自動貼付で 『まとめ』sheet に順に貼付していってしまう。 これを ▲部分の定義のように i = i+20 と offset()関数組み合わせにより、2回目以降の貼付はセル参照を20順に下げて貼付されていくように処理したい。 再度アドバイスよろしくお願い致します m(__)m