エクセルマクロで既存グラフを削除する方法

このQ&Aのポイント
  • エクセルのマクロを使用して、左側の表の一部を範囲指定した折れ線グラフを削除する方法について説明します。
  • また、右側の表の範囲を変更して、右の表だけを変更するマクロを作成する方法についても解説します。
  • さらに、右側の折れ線グラフ(グラフ1)を削除して新しいグラフを貼り付けるマクロを作成する際に、If文を使用する方法についても説明します。
回答を見る
  • ベストアンサー

エクセル マクロ 既存グラフの削除

また 質問させていただきます。 左側に表全体を範囲指定した折れ線グラフを、マクロを実行して貼り付けており 右側に表の一部を範囲指定した折れ線グラフを、マクロを実行して貼り付けます。 右の表の範囲を変更して、右の表だけを変更するマクロ作成したいと思っています。 左側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="全体グラフ" 右側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="グラフ1" 右側の折れ線グラフ(グラフ1)を削除して、範囲を変更した新たなグラフ(グラフ1に名前を変更)を貼り付けるマクロを作りましたが、右側のグラフが貼りついていない、最初のときに実行すると、削除するグラフが無いためにエラーがでてしまいます。 If を使用するのかなっと思っていますが、どのように入力すればいいのか分かりません。 教えて頂けないでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.2

Ifを使いたいならこんなカンジで。 sub macro1()  dim o as chartobject  if activesheet.chartobjects.count = 0 then   msgbox "NO GRAPH"   exit sub  end if  for each o in activesheet.chartobjects  if o.name = "グラフ1" then   o.delete   exit for  end if  next ’以下新たなグラフを貼り付けて名前をグラフ1に変える end sub

meina04
質問者

お礼

グラフの名前設定が悪いらしく、うまく動作しませんでした。 アドバイスをいただいたのにすみませんでした。

その他の回答 (2)

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

はてな??? 元々の情報提供: >右側のグラフの名前を変更して >Activesheet.ChartObjects(1).Name="グラフ1" 追加の情報: >グラフの名前設定が悪いらしく、うまく動作しませんでした。 ご自分のマクロで付けた名前をご自分のマクロで利用できないって、いったいどういう事でしょうか。 それはマクロの構文がどうこうの問題じゃなく、あなたがご自分で作成したあなたのデータの問題です。 ご自分が書いたマクロをよく見直して、いったいどんな名前を付けているのかよく確認して正しいマクロにしてください。

meina04
質問者

お礼

左側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="全体グラフ" 右側のグラフの名前を変更して Activesheet.ChartObjects(1).Name="グラフ1" と入力は間違いなくしてますが、可変範囲設定のせいか、”全体グラフ”と入力したほうが削除されてしまいます。 そもそも、可変範囲設定してるのでグラフを貼りなおす必要もなかったみたいで、大変ご迷惑をおかけいたしました。

  • xls88
  • ベストアンサー率56% (669/1189)
回答No.1

グラフを削除する必要は無いと思います。 SetSourceDataで元データを書き換えてみてください。 どうしても削除したいのなら現状のコードを提示してみてください。

meina04
質問者

お礼

グラフ名前設定が原因で、うまく動作しませんでした。 アドバイスをいただいたのにすみませんでした。

関連するQ&A

  • Excelの折れ線グラフの線をマクロから削除したい

    いつも楽しく勉強させていただいております。 OSはWin7でOffice365です。 Excelマクロはまだまだ勉強中です。 Excelシート上の折れ線グラフの線をマクロから削除したいのですが、どうしてもできません。 前提として6本線の折れ線グラフがあります。 データによってはグラフの線は6本以下のことがあります。 その場合は不要なグラフの線を消したいのです。 そこでグラフを右クリックし、[データソースの選択]ダイアログで削除したい系列を削除して、それをマクロ記録しました。 Sub Macro2() ActiveSheet.ChartObjects("グラフ 146").Activate ActiveChart.FullSeriesCollection(6).Delete End Sub これを参考に下記のマクロを書きました。 Sub d() Dim a As ChartObject Dim b As Chart Set a = ActiveSheet.ChartObjects(1) Set b = a.Chart b.FullSeriesCollection(6).Delete End Sub ところが最後の行で「実行時エラー1004 パラメータが無効です」になって異常終了してしまいます。 デバッガを使って調べると b.FullSeriesCollection.Countが3になており、 b.FullSeriesCollection(3).Deleteつまり三つ目の系列なら削除することができます。 しかし最大6個の系列のうち、後ろの方から削除したいのでこれでは困ってしまいます。 どうしたらいいでしょうか。 なぜ系列は6個なのに3個にされてしまうのでしょうか。 ちょっと引っかかるのが[データソースの選択]ダイアログで「データ範囲が複雑すぎるため表示できません」と言われることです。

  • エクセル マクロ ファイルを開きグラフ作成

    VBAを使用して、エクセルファイルをユーダで選択し読み込み 読み込んだエクセルデータからグラフを作成したいと考えています。 コマンドボタンに下記の通り入力しファイルを読み込みました。 Sub ファイルを開いてセルに表示() Dim OpenFileName As String OpenFileName = Application.GetOpenFilename("Microsoft Excelブック,*.xls?") If OpenFileName <> "False" Then Filename = Dir(OpenFileName) ActiveSheet.Cells(1, 7) = Filename Else MsgBox "キャンセルされました" End If End Sub 読み込んだエクセルファイル、Sheet1をデータとして下記の マクロを実行してグラフを作成したいのですが、どのように手直しを 行ったらよいのか分からないので教えて頂けないでしょうか。 Sub グラフを作成し別シートに貼り付け() '可変範囲折れ線グラフを作成 Dim hani As String shname = ActiveSheet.Name 'シート名を記憶 rmax = Range("A2").End(xlDown).Row '最終行 hani = "C1:C" & rmax & ",E1:E" & rmax Range(hani).Select Charts.Add ActiveChart.ChartType = xlLine ActiveChart.Location Where:=xlLocationAsObject, Name:=shname ActiveChart.SeriesCollection(1).XValues = "='" & shname & "'!R2C1:R" & rmax & "C1" '折れ線グラフを切り取り貼り付け ActiveChart.Parent.Cut Worksheets.Add(after:=Worksheets(Worksheets.Count)) _ .Name = Format(Now(), "グラフ1") ActiveSheet.Paste With Range("A1:F16") ActiveSheet.ChartObjects("グラフ 1").Width = .Width ActiveSheet.ChartObjects("グラフ 1").Height = .Height End With ActiveSheet.ChartObjects(1).Name = "全体グラフ" End Sub

  • VBAでグラフに名前をつける方法

    ひょっとしてものすごく簡単なことなのかもしれませんが行き詰っています。教えてください。 埋め込みグラフを3つ作成するマクロを記録しました。 それぞれのグラフに名前を付けて、名前を指定してグラフを選択したいのですが、作成時に ActiveSheet.ActiveChart.Name = "●●●" として ActiveSheet.ChartObjects("●●●").select としてもうまくいきません。 根本的に何かちがうのでしょうか。 よろしくお願いします。

  • エクセルマクロのグラフ操作

    エクセルにてグラフの線の色を変えるマクロを記録し そのまま実行するとエラーになります。 (Lineメソッドは失敗しました) どこを変更すれば上手くいきますでしょうか。 '------------------------記録したマクロ ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.Legend.Select ActiveChart.Legend.LegendEntries(1).Select With Selection.Format.Line .Visible = msoTrue .ForeColor.RGB = RGB(192, 0, 0) .Transparency = 0 End With 環境 Windows 7 Office 2010

  • Excelマクロによるグラフの消去方法

    Excelマクロ初心者です。 マクロで、グラフを消去する操作をさせたいのですが、どのグラフを消去するかというグラフの指定をどうしたら良いか悩んでいます。 単純に記録マクロでやってみると、以下のようになりました。「グラフ1」といったグラフの名前が分かっていればこれをそのまま応用すればいいのですが、グラフの名前が不明の場合にはどうしたらよいのでしょうか。マクロの中で、グラフの位置などから、グラフの名前を取得するといったようなことなどできるのでしょうかね。どういった方法でも結構ですので、よろしくお願いいたします。 Sub Macro1() ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.ChartArea.Select ActiveWindow.Visible = False Selection.Delete End Sub

  • エクセル・マクロでグラフを最背面に移動させたい

    エクセルのグラフを3つピッタリと重ねて表示しています 後ろのグラフを選択する時「最背面に移動」させてますが これをマクロにしたいです とりあえずマクロの記録でしてみたら Sub Macro1() ActiveSheet.ChartObjects("グラフ 7").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select ActiveSheet.ChartObjects("グラフ 5").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select ActiveSheet.ChartObjects("グラフ 2").Activate ActiveChart.ChartArea.Select Selection.ShapeRange.ZOrder msoSendToBack ActiveWindow.Visible = False Windows("Book1.xls").Activate Range("A1").Select End Sub と出来たのですが、マクロの実行そしてみると3列目の Selection.ShapeRange.ZOrder msoSendToBack の所で、 「実行時エラー438 オブジェクトはこのプロパティまたはメソッドをサポートしてません」 となってしまいます、どうすればよいのでしょう ボタンを押したら最前面のグラフが最背面に移動するようにしたいのですが難しいのでしょうか

  • Excelのグラフ「2軸上の折れ線と縦棒」で、折れ線が反映する軸を変更するには?

    ・2軸上の折れ線と縦棒のグラフを作っています。 ・4つの折れ線と、1つの縦棒を作りたいので、  対象となるセル5行6列を選択して、  「2軸上の・・」を選択したグラフ作成をしました。 ・すると、上から3行が縦棒で、下から2行が折れ線 になってしまいます。 ・上から4行を折れ線、下1行を縦棒にしたいので、マクロで Worksheets("ファイル名").ChartObjects(1) _ .Chart.SeriesCollection(1).ChartType = xlLine の構文を用い、 SeriiesCollection(1)から(4)をxLineに、 (5)をxlColumnClusteredにし実行したところ、 上4行を折れ線、下1行を縦棒にすることには 成功しました。 ですがそうなったものの、、上から4行目の折れ線だけが、 右側(Secondary)の縦棒の軸を反映しての折れ線 になってしまいます。 (※折れ線軸(左)は0から100の範囲、  縦棒の軸(右)は0から1000000の範囲なので、  4行目の折れ線(10.0, 12.3, 11.5, ・・・)が、  右軸を反映してまっ平の一直線で表現されてしまいます。  対象の行ごとの問題?グラフのグループ設定の問題?。) そこで、お願いがあります!。 この4行目の折れ線を左側の軸(primary)を反映した 折れ線になる様にするにはどうしたらよいか、 どなたか教えて頂けませんでしょうか。 お手数ですがなにとぞ宜しくお願い申し上げます。

  • excelのマクロによるグラフの指定方法

    マクロがどのように記録されるかを見ながら、VBAのスクリプトの書き方を学んでいる初心者です。 Sub Macro1() ' ' Macro1 Macro , ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveWindow.ScrollColumn = 1 ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$B$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$B$4:$B$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$C$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$C$4:$C$18" ActiveChart.ChartType = xlLine ActiveSheet.Shapes.AddChart.Select ActiveChart.ChartType = xlLine ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = "='平均化'!$D$1" ActiveChart.SeriesCollection(1).Values = "='平均化'!$D$4:$D$18" ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(2).Name = "='平均化'!$E$1" ActiveChart.SeriesCollection(2).Values = "='平均化'!$E$4:$E$18" ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(3).Name = "='平均化'!$F$1" ActiveChart.SeriesCollection(3).Values = "='平均化'!$F$4:$F$18" End Sub 以上のマクロを作成し、実行したのですが、”指定した名前のアイテムが見つかりませんでした”と出て、上手く実行されませんでした。 操作対象のオブジェクトを行き来する方法を知りたいのですが、オブジェクトを作成するたびに ActiveSheet.ChartObjects("グラフ 1").Activate のダブルクオーテーション内に当たる値が自動的に割り振られるため、この部分でエラーになることは分かりました。 つまりこの値をこちらから指定出来れば、望んだ動作をさせられるのではと考えているのですが、 どなたかご教示お願いできませんでしょうか。

  • エクセルのグラフをマクロで縮小化したい

    office2007。Vistaを使用。 エクセルのグラフを縮小するマクロを記録ボタンで作成しました。画面上は縮小されるのですが、「マクロの記録」ではそれが記録されません。office2003で作成したときは zoom を使用したような気がしますが、2007ではどうしたらよいのでしょうか?お教えください。A1B5 にデータが入っています。 Sub Macro1() ' Macro1 Macro Range("B2").Select ActiveSheet.Shapes.AddChart.Select ActiveChart.SetSourceData Source:=Range("'Sheet1'!$A$1:$B$5") ActiveChart.ChartType = xlColumnClustered ActiveChart.Location Where:=xlLocationAsNewSheet ActiveSheet.ChartObjects("グラフ 1").Activate ActiveSheet.ChartObjects("グラフ 1").Activate Sheets("Sheet1").Select Range("A1").Select End Sub

  • エクセル マクロでグラフの色を変えたい

    エクセル マクロにて 折れ線グラフが3つあるとします。 その中の1つグラフの名前が”あああ”とします。 そのグラフの最初の2つの点の色を赤、緑と変える方法をマクロで教えてください。

専門家に質問してみよう