Получить источник данных диаграммы Excel

В Visual Studio легко установить источник данных для диаграммы Excel, например

Chart.SetSourceData(Source:=SomeRange)

Но как мне ПОЛУЧИТЬ (получить) источник данных (диапазон) для уже существующей диаграммы в файле Excel?


person Rookie    schedule 15.11.2016    source источник


Ответы (3)


Вот функция, которая будет анализировать диапазоны из серии. Если у вас есть пользовательские формулы серий, в которых не используются диапазоны, они, вероятно, сломаются.

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
person Dick Kusleika    schedule 15.11.2016

Я думаю, что это уже решено здесь: Excel VBA - получить диапазон данных диаграммы https://stackoverflow.com/a/28391220/6868389

person lllpratll    schedule 15.11.2016

Код 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))
person Rookie    schedule 15.11.2016