• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル マクロ ファイルを開きグラフ作成)

エクセルマクロファイルを開いてグラフを作成する方法

xls88の回答

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

Aブックが開いている、元データはSheet1にあると仮定 シートを挿入>挿入したシートにグラフ作成 とやってみました。 Dim wbk As Workbook, wst As Worksheet Dim drng As Range, crng As Range Dim rmax As Long Set wbk = Workbooks("A.xlsx") With wbk Set wst = .Worksheets.Add(After:=.Sheets(.Sheets.Count)) End With wst.Name = Format(Now, "yyyymmdd") With wbk.Sheets("Sheet1") rmax = .Range("A2").End(xlDown).Row Set drng = .Range("A1:A" & rmax & ",C1:C" & rmax & ",E1:E" & rmax) End With Set crng = wst.Range("A1:F16") With crng With wst.ChartObjects.Add(.Left, .Top, .Width, .Height).Chart .ChartType = xlLine .SetSourceData Source:=drng, PlotBy:=xlColumns End With End With SetSourceDataで元データをセットしています。 A1が空白でないと上手くグラフがプロットされません。 >No.2 この回答への補足 ファイルを開かずにグラフ作成は無理だと思います。

meina04
質問者

お礼

Aにブック名を入力しましたが、Set wbk = Workbooks("A.xlsx")の欄でエラーが出てしまい、無知ながらにも色々とがんばりましたが解決できませんでした。 ご回答ありがとうございました。 また質問させていただきますので、ご指導のほどよろしくお願いいたします。

関連するQ&A

  • エクセルのグラフ

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

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

    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

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

  • Excelでのグラフ作成用マクロについて

    Excelで、グラフ作成をするマクロを作りました。 sheet1のBC列選択→sheet2に出力→プロットエリア拡大まではうまくいったのですが、肝心の「図の位置調整・サイズ調整」が出来ませんでした。 中身を見たところ、「グラフ12」とかいう名前が勝手についていたらしく、何回やってもその名前を変更することが出来ませんでした。 参照する列を変更してグラフを作成しようとすると、次のグラフが「グラフ13」となってしまい、図の位置調整のところでエラーになります。 マクロは次のようなものなのですが、どうすれば「グラフ12」ではなく、「先ほど作ったばかりのグラフ」を参照してくれるのでしょうか? グラフ12という部分に任意の名前さえつけられれば、何とかなりそうなのですが・・・ グラフ12というものは、「グラフウインドウ」で見られるもののようです。 Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C32158"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet3" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).HasTitle = False End With ActiveSheet.Shapes("グラフ 12").IncrementLeft -182.25 ActiveSheet.Shapes("グラフ 12").IncrementTop -105.75 ActiveSheet.Shapes("グラフ 12").ScaleWidth 1.48, msoFalse, msoScaleFromTopLeft ActiveSheet.Shapes("グラフ 12").ScaleHeight 1.21, msoFalse, msoScaleFromTopLeft ActiveChart.Axes(xlCategory).Select ActiveChart.Axes(xlValue).MajorGridlines.Select ActiveChart.PlotArea.Select Selection.Top = 1 Selection.Width = 526 Selection.Height = 242 End Sub

  • グラフの削除をExcelVBAで行う

    こんばんは。同じシートの中にグラフを3つ作成し、 コマンドボタンを押すとグラフを削除し、新しいグラフを作成するようにしたいのですが、グラフの3つ目を削除のしようとするとエラーが発生してしまいます。 2つ目までは順調に消えるのですが、3つ目のグラフが削除されないのはなぜなのでしょうか。 色々教えていただき何とか形になってきたのですが、確認すると色々とぼろがでてきてしまい、困っています。 どなたか教えていただけないでしょうか。 宜しくお願い致します。 Sub Glafu() Dim chartobj As ChartObject Worksheets("ABC").Activate ActiveSheet.ChartObjects(1).Delete ActiveSheet.ChartObjects(2).Delete ActiveSheet.ChartObjects(3).Delete Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 0, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("b2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル1" End With Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 200, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("e2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル2" End With Set chartobj = Worksheets("ABC").ChartObjects.Add(600, 400, 300, 200) chartobj.Chart.SetSourceData Worksheets("ABC").Range(Range("h2").End(xlDown), ActiveCell.End(xlToRight)) With Worksheets("ABC").ChartObjects(1).Chart .HasTitle = True .charttaitle.Text = "タイトル3" End With End Sub

  • Excel VBA グラフチャート名で指定するには

    ExcelのVBAでグラフを作成した後 ActiveChartでアクティブなチャートを指定するのではなく ActiveChart.Nameなどで取得したチャート名で指定するには どのように記述すればよいでしょうか。 例えば、以下のtest()のコードの中の ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows ActiveChart.SetElement (msoElementPrimaryCategoryAxisNone) ActiveChart.PlotArea.Select ActiveChart.Parent.Copy の部分をActiveChartを使わずチャート名(chart_nameなど)で指定するには どのように記述すればよいでしょうか。 よろしくお願いします。(Windows7,Excel2016) --------------------------------------- Sub test()  Dim chart_name As String  ThisWorkbook.Worksheets("Sheet1").Select  ThisWorkbook.Worksheets("Sheet1").Range("A1") = "A"  ThisWorkbook.Worksheets("Sheet1").Range("A2") = "B"  ThisWorkbook.Worksheets("Sheet1").Range("B1") = "75"  ThisWorkbook.Worksheets("Sheet1").Range("B2") = "25"  ThisWorkbook.Worksheets("Sheet1").Range("A10").Select  ThisWorkbook.Worksheets("Sheet1").Shapes.AddChart2(297, xlBarStacked100).Select  ThisWorkbook.Worksheets("Sheet1").Select  ActiveChart.SetSourceData Source:=Range("Sheet1!A1:B2"), PlotBy:=xlRows  chart_name = ActiveChart.Name  chart_name = Trim(Right(chart_name, Len(chart_name) - Len(ActiveSheet.Name)))  ThisWorkbook.Worksheets("Sheet1").ChartObjects(chart_name).Activate  ActiveChart.SetElement (msoElementPrimaryCategoryAxisNone)  ActiveChart.PlotArea.Select  ActiveChart.Parent.Copy 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でのグラフ作成用マクロについて。

    「新しいマクロを記録する」でグラフ作成用のマクロを作りました。 内容は、 1.sheet1のBC列を散布図でsheet2に出力。(4つほど別々のグラフを作成) 2.プロットエリアの拡大 3.図の位置調整・図の大きさ調整。(4つが重ならないように) というものです。 一応出来たのですが、何故か選択列を変更して(マクロ内の列選択を変更)出力・プロットエリア拡大までは出来るのですが、3が出来ません。 それで、分からないなりにマクロ内を覗いてみたところ、図の位置を調整する際に、対象となる図が ActiveSheet.Shapes("グラフ 17").IncrementLeft -177.75 などと言うように、グラフ17を参照してしまっているためにうまく動かないのだと思いました。 (そもそも、名前なんて付けていないはず・・・と思って調べていたら、どうやら「グラフウインドウ」で見ることが出来る名前を参照しているようでした。) いっそのこと、グラフをクリック・ドラッグで移動させるのではなく、出力する際に整然と並ぶように設定したいです。どうすればよいでしょう? 一応、作成したものを載せておきます。 ・1~2 Charts.Add ActiveChart.ChartType = xlXYScatter ActiveChart.SetSourceData Source:=Sheets("Sheet1").Range("B1:C32158"), _ PlotBy:=xlColumns ActiveChart.Location Where:=xlLocationAsObject, Name:="Sheet2" With ActiveChart .HasTitle = False .Axes(xlCategory, xlPrimary).HasTitle = True .Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = "mass" .Axes(xlValue, xlPrimary).HasTitle = True .Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "counts" End With ActiveChart.HasLegend = False ActiveChart.PlotArea.Select With Selection.Interior .ColorIndex = 2 .Pattern = xlSolid End With Selection.Top = 1 Selection.Width = 323 Selection.Height = 180 Selection.Left = 15 Selection.Width = 334 Selection.Height = 194 ActiveChart.Axes(xlCategory).Select With ActiveChart.Axes(xlCategory) .MinimumScale = 0 .MaximumScale = 50 .MinorUnitIsAuto = True .MajorUnit = 5 .Crosses = xlAutomatic .ReversePlotOrder = False .ScaleType = xlLinear .DisplayUnit = xlNone End With End Sub 3. ActiveSheet.Shapes("グラフ 17").IncrementLeft -182.25 ActiveSheet.Shapes("グラフ 17").IncrementTop -105.75 End Sub

  • マクロを利用して、用紙にグラフを縮小印字したい

    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

  • Excel VBA グラフ作成のときのエラー

    VBA初心者です。Excel2003を使っています。 Sheet1に作りたいグラフがあります。 データは下記のとおりです。 ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A")のところで、「実行時エラー13 型が一致しません」とエラーがでます。 不思議なのは、昨日は動いていたのです。 なぜ、エラーが出るようになったのかわかりません。 ご教授よろしくお願いします。 A B 1 a 1 2 2 3 3 4 4 5 5 6 b 6 7 7 8 8 9 9 10 10 11 c 11 12 12 13 13 14 14 15 15 Sub test() Wrow = Worksheets("sheet1").Cells(Rows.Count, "A").End(xlUp).Row For i = 1 To Wrow If Worksheets("sheet1").Cells(i, "A").Value = "a" Then a_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "b" Then b_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "c" Then c_data = Worksheets("sheet1").Cells(i, "A").Row ElseIf Worksheets("sheet1").Cells(i, "A").Value = "d" Then d_data = Worksheets("sheet1").Cells(i, "A").Row End If Next Sheets("sheet1").Select Range(Cells(a_data, "B"), Cells(b_data, "B")).Select ActiveSheet.ChartObjects.Add(30, 10, 500, 200).Select ActiveChart.ChartType = xlLineMarkers ActiveChart.SetSourceData Source:=Sheets("sheet1").Range(Cells(a_data, "B"), Cells(b_data - 1, "B")), PlotBy:=xlColumns ActiveChart.Location where:=xlLocationAsObject, Name:="sheet1" Sheets("sheet1").Select ActiveChart.Axes(xlCategory, xlPrimary).CategoryType = xlAutomatic ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection.NewSeries ActiveChart.SeriesCollection(1).Name = Cells(a_data, "A") ←エラーがでます。 ActiveChart.SeriesCollection(2).Values = Range(Cells(b_data, "B"), Cells(c_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(b_data, "A") ActiveChart.SeriesCollection(3).Values = Range(Cells(c_data, "B"), Cells(d_data, "B")) ActiveChart.SeriesCollection(2).Name = Cells(c_data, "A") End Sub