В Visual Studio легко установить источник данных для диаграммы Excel, например
Chart.SetSourceData(Source:=SomeRange)
Но как мне ПОЛУЧИТЬ (получить) источник данных (диапазон) для уже существующей диаграммы в файле Excel?
В Visual Studio легко установить источник данных для диаграммы Excel, например
Chart.SetSourceData(Source:=SomeRange)
Но как мне ПОЛУЧИТЬ (получить) источник данных (диапазон) для уже существующей диаграммы в файле Excel?
Вот функция, которая будет анализировать диапазоны из серии. Если у вас есть пользовательские формулы серий, в которых не используются диапазоны, они, вероятно, сломаются.
Public Function GetSourceData(ByRef cht As Chart) As Range
Dim srs As Series
Dim vaArgs As Variant
Dim i As Long
Dim rReturn As Range
For Each srs In cht.SeriesCollection
vaArgs = Split(Split(srs.Formula, "SERIES(")(1), ",")
For i = 0 To UBound(vaArgs) - 1
If rReturn Is Nothing Then
Set rReturn = Range(vaArgs(i))
Else
Set rReturn = Union(rReturn, Range(vaArgs(i)))
End If
Next i
Next srs
Set GetSourceData = rReturn
End Function
Использовать как:
?getsourcedata(activechart).Address
$B$2:$C$2,$A$3:$C$14
Я думаю, что это уже решено здесь: Excel VBA - получить диапазон данных диаграммы https://stackoverflow.com/a/28391220/6868389 а>
Код Visual Studio выглядит так:
Dim g As String
Dim gg() As String
Dim a As Excel.ChartObject
a = Globals.ThisAddIn.Application.ActiveSheet.chartobjects(1)
g = a.Chart.SeriesCollection(1).formula
gg = g.Split(",")
MsgBox(gg(2))