
VBAにてグラフ作成をしています。(Excel2016)
下記の内容で作成していますが、困っております。
①下記コードにてデータファイルを取り込みグラフ(散布図・ヒストグラム)を作成し、元ブックの
Sheet1の(B72)と(Y72)に張り付けたいのですがいい方法があればご教示お願いします。
②下記コードのpvtChart.Chart.SetSourceData Source:=ActiveSheet.Range("R6", Range("R6").
End(xlDown))部分にて、
”実行エラー 445 オブジェクトはこの動作をサポートしておりません。”
となりますが、原因はわからず混迷しています。
ご教示いただけると幸いです。
説明不足でしたら、補足をいたしますので、
よろしくお願いいたします。
☆作成コード☆
Sub ?t?@?C???J??()
Dim Target As String
Target = Application.GetOpenFilename("Excel?u?b?N,*.xl??")
If Target = "False" Then Exit Sub
Workbooks.Open Target
'?t?@?C??????i?[
Dim Ret As String
Dim Fso As Object
Target = ActiveWorkbook.FullName
Set Fso = CreateObject("scripting.filesystemobject")
Ret = Fso.getbasename(Target) '?x?[?X???i?g???q??????t?@?C?????j??擾
Workbooks("???????.xlsm").Worksheets("sheet1").Range("E35") = Ret
'?????
Dim BeforePos As Long
Dim U As Variant
Dim U2 As Variant
BeforePos = Range("R6").End(xlDown).Row
Cells(BeforePos + 2, 22).Formula = "=MAX(R6:R" & BeforePos & ")"
U = Cells(BeforePos + 2, 22).Value
Workbooks("???????.xlsm").Worksheets("sheet1").Range("W35") = U
'??????
BeforePos = Range("R6").End(xlDown).Row
Cells(BeforePos + 3, 22).Formula = "=SUM(R6:R" & BeforePos & ")"
U = Cells(BeforePos + 3, 22).Value
Workbooks("???????.xlsm").Worksheets("sheet1").Range("AG35") = U2
'?Z?~????
If U < 10 Then
Workbooks("???????.xlsm").Worksheets("sheet1").Range("AN35") = "?Z"
Else
Workbooks("???????.xlsm").Worksheets("sheet1").Range("AN35") = "?~"
End If
'?????I??Y???f?[?^????????????v??????B
'????A?N?e?B?u?????????V?[?g????擾
Dim ThisSheet_Name As String
ThisSheet_Name = ActiveSheet.Name
'???O???t??A?N?e?B?u?????????V?[?g???????
With Charts.Add
.Location Where:=xlLocationAsObject, Name:=ThisSheet_Name
End With
With ActiveChart.SeriesCollection(1)
.ChartType = xlXYScatter '?U?z?}
.XValues = Range("A6", Range("A6").End(xlDown)) 'X??????????w??
.Values = Range("R6", Range("R6").End(xlDown))
.Name = "????" '?}???w??"
End With
ActiveChart.Axes(xlCategory, xlPrimary).HasTitle = True
ActiveChart.Axes(xlCategory, xlPrimary).AxisTitle.Text = "????"
ActiveChart.Axes(xlValue, xlPrimary).HasTitle = True
ActiveChart.Axes(xlValue, xlPrimary).AxisTitle.Text = "????"
Dim ChartObj As Object '?????????Q?l
Set ChartObj = ActiveSheet.ChartObjects(1)
With ChartObj.Chart
.HasTitle = True
.ChartTitle.Text = Ret
End With
'With Charts.Add
'.Location Where:=xlLocationAsObject, Name:=ThisSheet_Name
'End With
Dim pvtChart As Shape
Set pvtChart = ActiveSheet.Shapes.AddChart2(366, xlHistogram)
With pvtChart.Chart
.HasTitle = True
.ChartTitle.Text = Ret
End With
pvtChart.Chart.SetSourceData Source:=ActiveSheet.Range("R6", Range("R6").End(xlDown))
End Sub
No.3ベストアンサー
- 回答日時:
グラフをどこかにコピペすると言う事でしょうか?
Selection.Copyは、質問に示しているコードの様に
Set ChartObj = ActiveSheet.ChartObjects(1) がされていれば、
ChartObj.Copy
Windows("???????.xlsm").Activate
Sheets("〇〇").Select
Range("B72").Select
ActiveSheet.Paste
こんな感じで
手元に2016がなく2013なのでヒストグラムは検証できず
No.2
- 回答日時:
補足については
検証している訳ではないので、確かではありませんが、
.Range("R6", Range("R6").End(xlDown)).Select
シート参照がないので
ActiveSheet.Range("R6", Range("R6").End(xlDown)).Select
と思いますが、デバッグ位置を示された方が分かり易いと思います。
No.1
- 回答日時:
多分、xlHistogram
>pvtChart = ActiveSheet.Shapes.AddChart2(366, xlHistogram)
参考サイト https://stackoverflow.com/questions/37912746/vba …
抜粋:
2016年に導入された新しいExcelグラフには別の手法が必要です。マイクロソフトはこれがバグであることを確認します。
回避策は、範囲を選択してからグラフを追加することです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) vbaのエラー対応(実行時エラー7:メモリが不足しています) 4 2023/04/24 00:20
- Visual Basic(VBA) VBAが止まります。 1 2022/09/02 14:51
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Excel(エクセル) VBAについて 3 2022/06/19 18:19
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
特定のセルだけ結果がおかしい...
-
エクセルのdatedif関数を使って...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
エクセル ドロップダウンリスト...
-
【関数】同じ関数なのに、エラ...
-
Office2021のエクセルで米国株...
-
【マクロ】列を折りたたみ非表...
-
9月17日でサービス終了らし...
-
【マクロ】アクティブセルの時...
-
ページが変なふうに切れる
-
【条件付き書式】シートの中で...
-
【マクロ】3行に上から下に並...
-
【マクロ】オートフィルターの...
-
【マクロ】EXCELで読込したCSV...
-
【画像あり】オートフィルター...
-
他のシートの検索
-
エクセルの循環参照、?
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報
Qchan1962さん
ご回答ありがとうございます。
参考サイトをもとに下記のように修正してみましたが、コンパイルエラー(参照が不正または不完全です。)が発生しうまくいきませんでした。
どこに不正または不完全があるのでしょうか?
Dim pvtChart As Shape
.Range("R6", Range("R6").End(xlDown)).Select
Set pvtChart = ActiveSheet.Shapes.AddChart2(366, xlHistogram)
With pvtChart.Chart
.HasTitle = True
.ChartTitle.Text = Ret
End With
ご回答ありがとうございます。
デバックの位置の説明がなく大変申し訳ございませんでした。
ご教示いただいた方法で②は解消することができました。
①はマクロ記録をもとに各グラフ作成コードの最後に
Selection.Copy
Windows("???????.xlsm").Activate
Range("N〇〇").Select
ActiveSheet.Pictures.Paste.Select
を記入しましたが、ヒストグラムだけグラフが真っ白になってしまいます。
何か不正や不完全があるのでしょうか。