今回は、グラフからデータ系列の情報を取り出しましょう。
データ系列の情報は4つで、シート名、表札の座標、横軸の座標、データ値の座標のことです。
これはそれほど難しくないのですが、コマンドが何を使うのかがわかりません。
いろいろ調べてみた結果、
ActiveChart.SeriesCollection.item(i).Formula
を使うことがわかりました。
Dim d_graph(30)
With ActiveChart.SeriesCollection
xx_suu = .Count 'グラフの数です
For i = 1 To xx_suu
d_graph(i) = .item(i).Formula
MsgBox "系列" & i & "のソースデータ範囲は ⇒" _
& vbCrLf & d_graph(i) '確認用
Next i
End With
を動かして、データ系列の情報がどうなっているかみてください。
=SERIES(y=ax2+bx+c!$B$1,y=ax2+bx+c!$A$2:$A$98,y=ax2+bx+c!$B$2:$B$98,1)
となっているので、これを分解し、データ系列の4項目を求めます。
ttt = "=SERIES(y=ax2+bx+c!$B$1,y=ax2+bx+c!$A$2:$A$98,y=ax2+bx+c!$B$2:$B$98,1)"
として、分解してみます。
p1=instr(ttt,"(")
p9=instr(ttt,"!")
x_sheet(i)=mid(ttt,p1+1,p9-p1-1)
ttt=mid(ttt,p9+1) '使った部分は取り除いていきます
p1=instr(ttt,",")
x_name(i)=left(ttt,p1-1)
ttt=mid(ttt,p1+1)
p1=instr(ttt,"!")
p9=instr(ttt,",")
x_midashi(i)=mid(ttt,p1+1,p9-p1-1)
ttt=mid(ttt,p9+1)
p1=instr(ttt,"!")
p9=instr(ttt,",")
XX(i)=mid(ttt,p1+1,p9-p1-1)
ttt=mid(ttt,p9+1)
p1=instr(ttt,")")
g_no(i)=left(ttt,p1-1)
これをfor toでxx_suu繰り返し情報をとります。
次にこの情報をワークシートに書き込みます。
シート移動の機能でシートを最寄のワークシートに移してください。
そのシートの特別な場所に書き込みます。グラフ管理表が作成されているので、その場所に書き込みました。F5から書き込みます。
for i=1 to xx_suu
cells(lr004+i,lc005) = "=" & x_sheet(i) & "!" & x_name(i) '計算式グラフの表札
cells(lr004+i,lc005+1)=x_sheet(i)
cells(lr004+i,lc005+2)=x_name(i)
cells(lr004+i,lc005+3)=x_midashi(i)
cells(lr004+i,lc005+4)=XX(i)
next i

このデータ系列の情報を活用して、新しいデータ系列の情報を作ってみてください。それを前回のマクロでグラフに追加してみてください。

0 件のコメント:
コメントを投稿