2016-06-23 3 views
0

特定のワークシートでチャートをループし、すべてのシートの最後に新しいチャートシートに移動しようとしています。また、グラフシートの名前を変更してタブの色を変更したいと思います。ここで埋め込みチャートを新しいチャートシートに移動してシート名を変更する

が私のコードです:

Dim ws As Worksheet, co As ChartObject, c As Chart 

Set ws = ThisWorkbook.Sheets("nameofSheet") 
ws.Activate 

For Each co In ws.ChartObjects 
    co.Activate 
    Set c = co.Chart 

    'move chart to new sheet at the end 
    c.Move After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) 

    'rename chart sheet 
    c.Name = "newChartSheetName" 

    'change colour 
    c.Tab.Color = RGB(1,1,1) 
Next co 

しかし、それが動作し、エラーをスローしません:Run-time error '1004': Method 'Move' of object '_Chart' failed

私は広範囲に検索したが、この問題への答えを見つけることができませんでした。私はco(ChartObject)を直接使ってみましたが、うまくいきませんでした。私はそれに何かをする前にオブジェクト.Activateする必要があることを読んだが、それも動作しませんでした。

答えて

2

埋め込みグラフの場合は、あなたが最初のグラフシートに変換する必要があります答えるため

Set c = c.Location(where:=xlLocationAsNewSheet, "newChartSheetName") 
c.Move After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count) 
+0

感謝を! 'set c = co.Chart'の直後に' Set c = c.Location(where:= xlLocationAsNewSheet、Name:= chartSheetName) 'を置き、' move'で世話をしているので 'c.Name = chartSheetName'を削除しました。しかし、これは最初のチャートでのみ機能し、オブジェクト '_Chart' failed'エラーの 'Method 'Location'をスローします。新しいチャートシートを削除してコードを再実行すると、再び最初のチャートでのみ機能します。 – ChrisVolkoff

+1

各チャートシートに異なる名前を使用していますか? – Rory

+0

ああ!各チャートの正しい名前を生成することになっていました(明らかに '' newChartSheetName "'を文字通り使用していませんが)、実際には動作しません。私はそれをデバッグします。どうもありがとう! – ChrisVolkoff

関連する問題