エクセルのグラフ操作方法と繰り返し処理について

このQ&Aのポイント
  • エクセルのグラフデータを繰り返し下に並べる方法や、VBAを使ってグラフをコピーしてペイントに貼り付ける方法についての質問です。
  • エクセルのグラフ操作について、データを繰り返し下に並べる方法や、VBAを使ってグラフをコピーして画像として保存する方法を知りたいです。
  • エクセルのグラフのデータを下に繰り返し並べる方法や、VBAを使ってグラフをコピーして画像として保存する方法について教えてください。
回答を見る
  • ベストアンサー

エクセルのグラフの操作

エクセルのグラフの操作 初歩的でスミマセンが、よろしくお願いします。 エクセルのグラフのデータの内容を1セルずつ下に下げて、それを400回繰り返したいんです。 'wave-h'!R402C3と'wave-h'!R402C4を 'wave-h'!R403C3と'wave-h'!R403C4にして 'wave-h'!R867C3と'wave-h'!R867C4にまでしたいのですが。 do loopを考えてるんですが、引数?が上手くいかなくて・・・。 ついでにその後グラフをコピーしてペイントに貼り付けてJPGで保存する予定です。 これを400回以上繰り返すんですが、ペイントのコピーのところまではエクセルのVBAで可能でしょうか。よろしくお願いします。 ActiveSheet.ChartObjects("グラフ 4").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SeriesCollection(2).XValues = "='wave-h'!R402C3" ActiveChart.SeriesCollection(2).Values = "='wave-h'!R402C4" ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(2).Select ActiveChart.ChartArea.Select ActiveChart.ChartArea.Copy

  • Samedi
  • お礼率86% (129/150)

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

  • ベストアンサー
  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

点が一個だけの散布図で試しにやってみました。当方xl2000です。 当方の試験データで試していますので、質問者様の条件に合わせてアレンジしてください。 ExportメソッドはFiltermode引数を指定しないでも、拡張子で判別して、その形式で保存してくれる様です。コメントアウトしてありますが、gifで保存した方が見た目は良いと思います。 Sub test() Dim i As Long Dim strRow As String Const offsetValue As Long = 2 ActiveSheet.ChartObjects(1).Activate For i = 1 To 10 strRow = CStr(i + offsetValue) With ActiveChart .SeriesCollection(1).XValues = "='Sheet1'!R" & strRow & "C2" .SeriesCollection(1).Values = "='Sheet1'!R" & strRow & "C3" '.Export "C:\graph" & strRow & ".gif" .Export "C:\graph" & strRow & ".jpg" End With Next i End Sub

Samedi
質問者

お礼

どうもありがとうございます!こちら用にアレンジして早速試してみましたが、理想的な感じで出来ました!しかもJPGでも保存できて最高です!この後AVIに変換するので、とりあえずJPGでやってみる予定です。本当に感謝感激です。どうもありがとうございます!!!

関連するQ&A

  • Excel 2000でデータ量が493行 列が「AW」迄のサイズが96

    Excel 2000でデータ量が493行 列が「AW」迄のサイズが966KB グラフが2個で その内の1個(グラフ24)を マクロ(下記のコマンド)を組んで 1週間に1度 5日分ずつ移動させています 問題なく動作して使えていたのですが 此処の所でマクロ動作は完了してグラフデータも5日分移動して上書き保存できるので 正常完了だと思うのですが 次に開く時に通常より時間が掛かって「Microsoft Excel Windows」の小さな画面で「問題が発生したため、Microsoft Excel for Windowsを終了します。ご不便をおかけして申し訳有りません。」の画面が出てエラー報告を「送信しない」をクリックすると終了します 以後何度やっても同じ経過になり 結局開けなくなりました 他にコメントが何も出ず 困惑しているのですが「エラー報告に含まれるデータ」の参照とか 何かの方法で原因を調べる方法を御存知の方がいれば アドバイスを戴きたいので投稿しました 宜しくお願い致します hjm$ = Range("a3") - 60: owr$ = Range("a4") ' ActiveSheet.ChartObjects("グラフ 24").Activate ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(1).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(1).Values = "=Data!R" + hjm$ + "C42:R" + owr$ + "C42" ActiveChart.SeriesCollection(2).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(2).Values = "=Data!R" + hjm$ + "C43:R" + owr$ + "C43" ↓ (3)~(6)までのコマンド記述省略 ActiveChart.SeriesCollection(7).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(7).Values = "=Data!R" + hjm$ + "C48:R" + owr$ + "C48" ActiveChart.SeriesCollection(8).XValues = "=Data!R" + hjm$ + "C1:R" + owr$ + "C1" ActiveChart.SeriesCollection(8).Values = "=Data!R" + hjm$ + "C49:R" + owr$ + "C49"

  • グラフの参照元を相対参照で記述するには

    マクロ初心者です。 あるグラフを最初テンプレートで作っておいて、他のデータでも簡単に同じグラフを作れるようにしたいです。 マクロの記録で「相対参照」があったので、これでできると思ったのですが、グラフのセルは絶対参照になるようです。下記のようになってりまいます。 Sub Macro6() ' ' Macro6 Macro ' ' ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveCell.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.PlotArea.Select ActiveSheet.ChartObjects("グラフ 1").Activate ActiveChart.SeriesCollection(1).XValues = "='Sheet1'!J3:J11" ActiveChart.SeriesCollection(1).Values = "='Sheet1'!M3:M11" ActiveChart.SeriesCollection(2).XValues = "='Sheet1'!J3:J11" ActiveChart.SeriesCollection(2).Values = "='Sheet1'!P3:P11" ActiveCell.Select End Sub 具体的にやりたい動作は、 1.相対的な場所を決定するセルを選択(表の左上のセルなど) 2. ActiveChart.SeriesCollection(1).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル" ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に4列進んだセル:1.のセルから右に4列下に8列進んだセル" ActiveChart.SeriesCollection(2).XValues = "='1.のセルから右に2列進んだセル:1.のセルから右に2列下に8列進んだセル" ActiveChart.SeriesCollection(1).Values = "='1.のセルから右に6列進んだセル:1.のセルから右に6列下に8列進んだセル" というふうにしたいです。 ご指導お願いします。

  • Excelマクロでグラフ作成

    現在、Excelのマクロでグラフを作成しようとしていますが、データ範囲の指定で悩んでいます。 マクロはド素人で右も左もわからない状態から、なんとなく雰囲気だけわかってきたような感じです。 とあるHPをそのまま貼り付け用シートにコピペして、そこからデータ抽出用シートにデータを抽出して蓄積していく形にしています。 品名が複数あるので、オートフィルタを使用してソートするために始点をどう決めるのかがわからないのと、データがどんどん蓄積していくために終点もどう決めたらいいのかわかりません。 「データ抽出用シート」のデータ形式は、 18行目にA:品目 B:最低値 C:平均値 D:最高値 G:日付 19行以降にデータ という形になっています。 とりあえず、通常のマクロを記録する方法でマクロの骨組みだけ作ってから細部をいじろうとしております。 データの範囲を指定する部分だけコピペしますので、ここをどういじったらいいのかご教授願います。 とある品目を指定してオートフィルタをかけた後に、グラフ作成手順のマクロを記録したら、こんな感じになりました。 Charts.Add ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("データ抽出用シート").Range("L17") ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=データ抽出用シート!R19C7:R366C7" ActiveChart.SeriesCollection(1).Values = "=データ抽出用シート!R19C2:R366C2" ActiveChart.SeriesCollection(1).Name = "=データ抽出用シート!R18C2" ActiveChart.SeriesCollection(2).XValues = "=データ抽出用シート!R19C7:R366C7" ActiveChart.SeriesCollection(2).Values = "=データ抽出用シート!R19C3:R366C3" ActiveChart.SeriesCollection(2).Name = "=データ抽出用シート!R18C3" ActiveChart.SeriesCollection(3).XValues = "=データ抽出用シート!R19C7:R366C7" ActiveChart.SeriesCollection(3).Values = "=データ抽出用シート!R19C4:R366C4" ActiveChart.SeriesCollection(3).Name = "=データ抽出用シート!R18C4" ActiveChart.Location Where:=xlLocationAsObject, Name:="データ抽出用シート" 宜しくお願いします。

  • グラフのデータ範囲の変数設定

    シート上の埋め込みグラフで,データの範囲を変数として設定したいのですが, ActiveSheet.ChartObjects("グラフ").Activate ActiveChart.PlotArea.Select a = x*2 b = x*3 c = y*2 d = y*5 ActiveChart.SeriesCollection(1).XValues = "=シート1!R" & a& '"C" &b& ":R" &c& "C" &d とすると,最後の式が構文エラーとなります。 何が原因なのかご存知方よろしくお願いします。

  • 初心者です。SeriesCollection(i)はどのように使うのでしょうか

    Sheets("推移グラフ").Select ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(1).XValues = Worksheets(Zsheet2).Range(xrenge1) ActiveChart.SeriesCollection(1).Values = Worksheets(Zsheet2).Range(yrenge1) ActiveChart.SeriesCollection(2).XValues = Worksheets(Zsheet2).Range(xrenge1) ActiveChart.SeriesCollection(2).Values = Worksheets(Zsheet2).Range(yrenge2) ActiveChart.SeriesCollection(3).XValues = Worksheets(Zsheet2).Range(xrenge1) ActiveChart.SeriesCollection(3).Values = Worksheets(Zsheet2).Range(yrenge3) ActiveChart.Deselect に折れ線を1本追加したいのですが、SeriesCollectionの使い方がわかりません。SeriesCollection(i)のiは1~3しか使えないのでしょうか。

  • VBAでの、Excelグラフの項目軸の指定方法

    エクセルグラフ作成にて、棒グラフ、X軸の項目名を指定するVBAでの方法を求めています。 エクセルのウィザード2/4「系列」にて、項目軸の設定ができますが、それをVBAにてやりたいのです。 ウィザードでは、下記のように指定  ='xxxxxxxx'!R2C25:R13C25 レコード機能で、これをキャッチすると、 ActiveChart.SeriesCollection(1).XValues = "=' xxxxxxxx '!R21C25:R30C25" ActiveChart.Location Where:=xlLocationAsObject, Name:=" xxxxxxxx " ‘--------ChartObject化する 小生は、Chartobjectにて、グラフを作成、上記を使って、項目名を指定しようとしました。 ActiveChart.SeriesCollection(1).XValues = "=' xxxxxxxx '!R21C25:R30C25" これは、うまくいきました。しかし、変数を使うと、途端に駄目です。 例えば、 temp1="xxxxxxxx" temp2="R21C25:R30C25" temp="=" & temp1 & "!" & temp2 として ActiveChart.SeriesCollection(1).XValues =temp これは、うまくいきません。 よろしくお願いいたします。

  • エクセルのグラフ

    グラフが貼り付けられているシートを見えない状態でグラフ描画したいのですがうまくいきません ちなみに、今のコードはこうです。 Sub 電力力率表示() ActiveSheet.ChartObjects("グラフ 3").Activate ActiveChart.SeriesCollection(2).Select ActiveChart.SetSourceData Source:=Sheets(s_NAME) _ .Range("A2:C146"), PlotBy:=xlColumns End Sub

  • 散布図参照先設定時にエラーがでます(>_<)

    こんにちは 最近Excel2000でVBAを始めたばかりです。 複数の系列を持つ散布図で、それぞれの系列の 参照先を設定したいのですが、下記のコードで エラーがでてしまいます、 ActiveSheet.ChartObjects(1).Activate ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(2).XValues = "=データ1!R4C5:R51C5" ActiveChart.SeriesCollection(2).Values= "=データ1!R4C4:R51C4" ←この最後の行でエラー 同一の値をVBAではなく、Excelの 「元のデータ」の「系列」で設定すると、 問題なく設定ができます。 色々試した結果、下記の二つの条件を満たした時に エラーがでるような気がします。 条件1  1以外のデータ系列の設定をしようとしている時  SeriesCollection(1)では問題ありません 条件2  Xの値、Yの値のどちらかに数値ではなく  既にセルの参照先が設定されているデータ系列に  設定しようとしている時。 参照先が「={1}」や「={2}」などと数値のみが  入力されている場合は問題ありません どなたか教えてください。 よろしくお願いしますm(_ _)m

  • Excel VBAのグラフ化自動マクロがうまくできません。

    Sub 自動グラフ作成() For i = 5 To 32 Step 3 Charts.Add ActiveChart.ChartType = xlXYScatterSmoothNoMarkers ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).XValues = "=distance!R18C1:R1009C1" ActiveChart.SeriesCollection(1).Values = "=distance!R18C" & (i + 2) & ":R1009C" & (i + 2) Next End Sub 上記のように表の中の決められたセルからデータを取り出して自動的にグラフを作成してくれるマクロを作成したのですが、奇数個めのグラフは正常に生成されるのですが、偶数個めのグラフになぜか x= y=distance!$M$18:$M$1009 x= y={1} みたいな必要なグラフ以外に上記の2つのグラフを混じってしまいます。これってどこがおかしいのでしょうか? どなたか助けて下さい。 お願いいたします。

  • 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 のダブルクオーテーション内に当たる値が自動的に割り振られるため、この部分でエラーになることは分かりました。 つまりこの値をこちらから指定出来れば、望んだ動作をさせられるのではと考えているのですが、 どなたかご教示お願いできませんでしょうか。

専門家に質問してみよう