こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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

投稿日時 - 2005-06-01 03:29:57

QNo.1422149

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

こんにちは。
>オブジェクトは、このメソッドをサポートしていません…と、これは何のエラーになるのでしょうか?

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

投稿日時 - 2005-06-01 14:38:57

補足

>オブジェクト… エラー部分は解消されました。

補足で教えてもらいたいのですが…
●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

投稿日時 - 2005-06-02 03:28:27

ANo.2

#1です

さらに調べていたら間違だったので、訂正します

グラフの名前を取得するサンプルがありました
http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=19136&rev=&no=0

そもそもグラフの名前の取得するのですから、ActiveSheetではなくActiveChartと思います

参考URL:http://hpcgi1.nifty.com/kenzo30/b_cbbs/cbbs.cgi?mode=al2&namber=19136&rev=&no=0

投稿日時 - 2005-06-01 05:05:17

ANo.1

ちょっと調べただけなんですけど、グラフって複数枚作れるじゃないですか だから
ChartObjects(対象とするグラフの番号).Nama
となるようです
(1枚しかないのなら1)

参考になれば幸いです

投稿日時 - 2005-06-01 04:04:54

あなたにオススメの質問