如果图表从另外一个文件的数据创建或链接到另外一个文件,当该文件因损坏不可用或被删除后,可以使用微软帮助中的这个方法来提取图表数据。
先在含有图表的文件中打开VBE窗口,添加新模块,将下面的过程放入模块中。
在工作表中选择图表,运行宏过程GetChartValues,将在工作表“ChartData”(如果不存在则创建该工作表)中放置图表的源数据。
Sub GetChartValues() Dim NumberOfRows As Integer Dim X As Object Dim Counter As Integer Dim strSheet As String Counter = 2 ' 计算数据源总行数 NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values) strSheet = ActiveSheet.Name ' 保存当前工作表名称 ' 新建工作表并更名为"ChartData" Sheets.Add On Error Resume Next ActiveSheet.Name = "ChartData" ' 如果工作表"ChartData"已经存在,则删除新建的工作表 If Err.Description <> "" Then Application.DisplayAlerts = False ActiveSheet.Delete Application.DisplayAlerts = True End If Worksheets("ChartData").Select Cells.Clear Worksheets("ChartData").Cells(1, 1) = "X Values" Worksheets(strSheet).Select ' 将X轴数据写入到工作表 With Worksheets("ChartData") .Range(.Cells(2, 1), _ .Cells(NumberOfRows + 1, 1)) = _ Application.Transpose(ActiveChart.SeriesCollection(1).XValues) End With ' 遍历图表中的所有系列并将它们的数据写入到工作表 For Each X In ActiveChart.SeriesCollection Worksheets("ChartData").Cells(1, Counter) = X.Name With Worksheets("ChartData") .Range(.Cells(2, Counter), _ .Cells(NumberOfRows + 1, Counter)) = _ Application.Transpose(X.Values) End With Counter = Counter + 1 Next End Sub