Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1958 / 13645 ツリー ←次へ | 前へ→

【70815】グラフシートのソースデータ取得 美貴 12/1/3(火) 12:08 質問[未読]
【70816】Re:グラフシートのソースデータ取得 kanabun 12/1/3(火) 13:11 発言[未読]
【70820】Re:グラフシートのソースデータ取得 美貴 12/1/3(火) 14:37 お礼[未読]
【70821】Re:グラフシートのソースデータ取得 kanabun 12/1/3(火) 15:21 発言[未読]
【70822】Re:グラフシートのソースデータ取得 美貴 12/1/3(火) 15:47 お礼[未読]

【70815】グラフシートのソースデータ取得
質問  美貴  - 12/1/3(火) 12:08 -

引用なし
パスワード
   みなさん
こんにちは♪

お正月三が日も今日がラストですね(>_<)
私は明日までがお休みなので、今日もExcel三昧(笑)

で、新年2回目の質問です。

グラフシートのソースデータ取得の方法を
教えて下さい。
組み込みグラフの場合は、Formulaですが
グラフシートの場合がよくわかりません。
私の自宅PCの環境ではVBAのヘルプが見れないのもあって(^_^;)

非常に初歩的な内容で申し訳ございませんが、
どうぞよろしくお願い致します。

P.S.
前回2回の質問の回答頂いた方に大変感謝しています。
ここで問題が解決すると、ホント
スッキリコンコンで一日が過ごせますね♪

【70816】Re:グラフシートのソースデータ取得
発言  kanabun  - 12/1/3(火) 13:11 -

引用なし
パスワード
   ▼美貴 さん:こんにちは〜
>組み込みグラフの場合は、Formulaですが

Formulaが取得できればよろしいんですか?

ワークシート上のグラフのことは(組み込みでなく)「埋め込みグラフ」といい、
オブジェクトはChartObjectです。ChartObjectはグラフを収納する
コンテナみたいなもので、実質のグラフである Chartオブジェクト
は このChartObjectの下にあります。

いっぽう、グラフシート上のグラフはコンテナなしで
いきなり Chart です。
(混乱させるようですが、ひとつのグラフシート上に 複数のグラフを
配置することもできます。そのときは 個々のグラフがChartObjects
になります。)
 
(例1)
 'グラフシートがアクティブになっているとき
 MsgBox ActiveChart.SeriesCollection(1).Formula
 
(例2)
 'アクティブにしなくてもFormulaは取得できます
 Dim Cht As Chart
 Set Cht = Charts("Chart1")  'グラフシート
 MsgBox Cht.SeriesCollection(1).Formula

【70820】Re:グラフシートのソースデータ取得
お礼  美貴  - 12/1/3(火) 14:37 -

引用なし
パスワード
   ▼kanabun さん:

こんにちは♪

うまくいきましたぁ♪

で、追加の質問いいですかぁ?(^_^;)

>ひとつのグラフシート上に 複数のグラフを
>配置することもできます。

とのことなのですが、その場合にそれらのグラフを
コレクションとして扱うにはどんなキーワードに
なるんでしょうか?
私のマクロは、ブックの中のグラフシートに他のブックへの
外部リンクがないかどうかをチェックするものです。

どうぞよろしくお願い致します。


>▼美貴 さん:こんにちは〜
>>組み込みグラフの場合は、Formulaですが
>
>Formulaが取得できればよろしいんですか?
>
>ワークシート上のグラフのことは(組み込みでなく)「埋め込みグラフ」といい、
>オブジェクトはChartObjectです。ChartObjectはグラフを収納する
>コンテナみたいなもので、実質のグラフである Chartオブジェクト
>は このChartObjectの下にあります。
>
>いっぽう、グラフシート上のグラフはコンテナなしで
>いきなり Chart です。
>(混乱させるようですが、ひとつのグラフシート上に 複数のグラフを
>配置することもできます。そのときは 個々のグラフがChartObjects
>になります。)
> 
>(例1)
> 'グラフシートがアクティブになっているとき
> MsgBox ActiveChart.SeriesCollection(1).Formula
> 
>(例2)
> 'アクティブにしなくてもFormulaは取得できます
> Dim Cht As Chart
> Set Cht = Charts("Chart1")  'グラフシート
> MsgBox Cht.SeriesCollection(1).Formula

【70821】Re:グラフシートのソースデータ取得
発言  kanabun  - 12/1/3(火) 15:21 -

引用なし
パスワード
   ▼美貴 さん:
>>ひとつのグラフシート上に 複数のグラフを
>>配置することもできます。
>
>とのことなのですが、その場合にそれらのグラフを
>コレクションとして扱うにはどんなキーワードに
>なるんでしょうか?
>私のマクロは、ブックの中のグラフシートに他のブックへの
>外部リンクがないかどうかをチェックするものです。

グラフシート上にグラフがひとつのときは、グラフの系列は
  Charts(1).SeriesCollection
という単純階層です。(Charts(1) は 1番目のグラフシート)

グラフシート上に複数グラフがおかれているときは、各グラフの系列は
ワークシート上の埋め込みグラフと同様ChartObjectのなかに1つづつ
Chartがある、という格好になります。
たとえば Charts(1) に 4つのChartObjectsがあるばあいは
  Charts(1).ChartObjects(1).Chart.SeriesCollection
  Charts(1).ChartObjects(2).Chart.SeriesCollection
  Charts(1).ChartObjects(3).Chart.SeriesCollection
  Charts(1).ChartObjects(4).Chart.SeriesCollection
で各系列にアクセスできます。

'---------------------------------------------------
'●対象グラフシートをアクティブにして実験です
Sub ChartObjects_On_Chart()
  Dim objCht As ChartObject
  Dim n As Long
  n = ActiveChart.ChartObjects.Count
  If n = 0 Then
    ShowFormula ActiveChart
  Else
    For Each objCht In ActiveChart.ChartObjects
      ShowFormula objCht.Chart
    Next
  End If
End Sub
Private Sub ShowFormula(Cht As Chart)
  Dim Ser As Series
  For Each Ser In Cht.SeriesCollection
    Debug.Print Ser.Formula
  Next
End Sub

【70822】Re:グラフシートのソースデータ取得
お礼  美貴  - 12/1/3(火) 15:47 -

引用なし
パスワード
   ▼kanabun さん:

サンプルマクロまで作って下さって、とっても感激です♪
よく理解できましたぁ(^。^)

どうもありがとうございました♪

1958 / 13645 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free