🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

1回答

831閲覧

VBA 読み込んだエクセルファイルからグラフの集約させたい

qqkf

総合スコア10

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/12/08 13:36

編集2020/12/10 12:42

■実現したいこと
エクセルファイルの中に散布図で作成されたグラフシートがありますが、これを1つに集約して表示させたいです。
画像3と画像5が散布図になりますが、これをVBAで1つに集約可能でしょうか。
完成したのが、画像6になります。
集約した際に、1つ目のファイルは、赤で表現し、2つ目のファイルは、青で表現させたいです。

■分からないこと
対象のエクセルファイルを読み込んだ後、どうやってグラフを集約させるか分からないです。

■前提
対象のエクセルファイルを読み込んだプログラムは作成したのですが続きが難しい状態です。

画像が以下になります。

イメージ説明
画像1
この画像は、実行画面です。
③の「錘のグラフ集約」ボタンを押すと、①と②の散布図のグラフが集約。
結果画面は、この実行ファイルの別シートでお願いします。

イメージ説明
画像2
画像1で選択した「1.錘の散布図ファイル」の[記入]シートです。

イメージ説明
画像3
画像2で作成した[散布図]シートです。

イメージ説明
画像4
画像1で選択した「2.錘の散布図ファイル」の[記入]シートです。

イメージ説明
画像5
画像4で作成した[散布図]シートです。

イメージ説明
画像6
これが完成イメージなります。

コードが以下になります。

VBA

1Private Sub File_Select_Button1_Click() 2'------------------------------------------------------------------------------- 3' File_Select_Button1 4' 説明 5' 1.錘の散布図ファイル選択 クリック時 6'------------------------------------------------------------------------------- 7 Dim FType As String 'ファイルの種類 8 Dim Prompt As String 'ダイアログのタイトル 9 Dim Target As String '任意読み込むパス 10 Dim FPath As Variant 'ファイル参照パス 11 Dim Pos As Long '参照先のセル 12 Dim WS As Worksheet '対象シート名 13 14 Set WS = Worksheets("グラフデータ読み込み") 15 16 '----- 選択できるファイルの種類を".xls"に限定 17 FType = "Excelブック,*.xls" 18 19 '----- ダイアログのタイトルを指定 20 Prompt = "錘の散布図ファイルを選択して下さい" 21 22 '----- ファイル参照ダイアログの表示 23 FPath = Application.GetOpenFilename(FType, , Prompt) 24 25 26 '----- ダイアログでキャンセルボタンが押された場合は処理を終了 27 If FPath = False Then 28 End 29 End If 30 31 '----- H6セルにファイル名をセット 32 WS.Cells(6, 8).Value = FPath 33 Pos = InStrRev(Cells(6, 8).Value, "\") 34 35End Sub 36 37Private Sub File_Select_Button2_Click() 38'------------------------------------------------------------------------------- 39' File_Select_Button2 40' 説明 41' 2.錘の散布図ファイル選択 クリック時 42'------------------------------------------------------------------------------- 43 Dim Ftype_2 As String 'ファイルの種類 44 Dim Prompt_2 As String 'ダイアログのタイトル 45 Dim Target_2 As String '任意読み込むパス 46 Dim FPath_2 As Variant 'ファイル参照パス 47 Dim Pos_2 As String '参照先のセル 48 Dim WS_2 As Worksheet '対象シート名 49 50 Set WS_2 = Worksheets("グラフデータ読み込み") 51 52 '----- 選択できるファイルの種類を".xls"に限定 53 Ftype_2 = "Excelブック,*.xls" 54 55 '----- ダイアログのタイトルを指定 56 Prompt_2 = "錘の散布図ファイルを選択して下さい" 57 58 '----- ファイル参照ダイアログの表示 59 FPath_2 = Application.GetOpenFilename(Ftype_2, , Prompt_2) 60 61 '----- ダイアログでキャンセルボタンが押された場合は処理を終了 62 If FPath_2 = False Then 63 End 64 End If 65 66 '----- H16セルにファイル名をセット 67 WS_2.Cells(11, 8).Value = FPath_2 68 Pos_2 = InStrRev(Cells(11, 8).Value, "\") 69 70End Sub 71 72Private Sub GraphAggregationButton_Click() 73'------------------------------------------------------------------------------- 74' GraphAggregationButton 75' 説明 76' 錘のグラフ集約 クリック時 77'------------------------------------------------------------------------------- 78 Dim wbk1 As Workbook '錘の散布図ファイル 読み込み1 79 Dim wbk2 As Workbook '錘の散布図ファイル 読み込み2 80 Dim wshCmp As Worksheet '錘のグラフ集約:[グラフデータ読み込み]シート 81 82 Set wshCmp = Worksheets("グラフデータ読み込み") 83 84 Set wbk1 = Workbooks.Open(wshCmp.Range("H6").Value, ReadOnly:=True) 85 Set wbk2 = Workbooks.Open(wshCmp.Range("H11").Value, ReadOnly:=True) 86 87 88End Sub

GraphAggregationButton_Click()から集約化を書いてますが、どうやって記述したらよいか分からない状態です。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

今回の質問とは関係ないかも知れませんが、File_Select_Button1_ClickとFile_Select_Button2_Clickはほぼ同じプログラムが書かれているので、共通化しましょう。

GraphAggregationButton_Clickのグラフの書き方等は自身で調べて下さい。
2本にする方法はこちらが参考になると思います。
特に重要だと思った部分を記載しておきます。

VBA

1ActiveChart.SetSourceData Range(Cells(1, 1), Cells(N, 3)), xlColumns ' 離れた列は Union で Range を作成すれば良いル

VBA

1ActiveChart.SeriesCollection(1).Name = "sin(x)" 2ActiveChart.SeriesCollection(2).Name = "cos(x)" ' (グラフ1本なら不要)

投稿2020/12/09 01:07

編集2020/12/09 01:10
stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

qqkf

2020/12/10 12:39

回答ありがとうございます。 もともと作成されたグラフシートから集約できるのでしょうか。 このコードだとグラフから作成してると感じました。
stdio

2020/12/11 03:15

> もともと作成されたグラフシートから集約できるのでしょうか。 可能ですが、散布図のデータに新しいデータを追加した後、グラフの方は再構成する形になります。 リンクの方でもその為にあえてグラフを削除してから、再度グラフを作成していますよね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問