获取Excel图表数据源

使用Visual Studio为Excel图表设置数据源很容易

Chart.SetSourceData(Source:=SomeRange) 

但是,如何获取(检索)一个Excel文件中已经存在的图表的数据源(范围)?

这里有一个函数可以parsing这个系列的范围。 如果您有不使用范围的自定义系列公式,则可能会中断。

 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)) 
Interesting Posts