如果圖表從另外一個文件的數(shù)據(jù)創(chuàng)建或鏈接到另外一個文件,當(dāng)該文件因損壞不可用或被刪除后,可以使用微軟幫助中的這個方法來提取圖表數(shù)據(jù)。
先在含有圖表的文件中打開VBE窗口,添加新模塊,將下面的過程放入模塊中。
在工作表中選擇圖表,運行宏過程GetChartValues,將在工作表“ChartData”(如果不存在則創(chuàng)建該工作表)中放置圖表的源數(shù)據(jù)。
Sub GetChartValues()Dim NumberOfRows As IntegerDim X As ObjectDim Counter As IntegerDim strSheet As String Counter = 2 ' 計算數(shù)據(jù)源總行數(shù) NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)strSheet = ActiveSheet.Name ' 保存當(dāng)前工作表名稱' 新建工作表并更名為"ChartData" Sheets.AddOn Error Resume NextActiveSheet.Name = "ChartData"' 如果工作表"ChartData"已經(jīng)存在,則刪除新建的工作表 If Err.Description <> "" ThenApplication.DisplayAlerts = FalseActiveSheet.DeleteApplication.DisplayAlerts = TrueEnd IfWorksheets("ChartData").SelectCells.ClearWorksheets("ChartData").Cells(1, 1) = "X Values"Worksheets(strSheet).Select ' 將X軸數(shù)據(jù)寫入到工作表 With Worksheets("ChartData").Range(.Cells(2, 1), _.Cells(NumberOfRows + 1, 1)) = _Application.Transpose(ActiveChart.SeriesCollection(1).XValues)End With ' 遍歷圖表中的所有系列并將它們的數(shù)據(jù)寫入到工作表 For Each X In ActiveChart.SeriesCollectionWorksheets("ChartData").Cells(1, Counter) = X.NameWith Worksheets("ChartData").Range(.Cells(2, Counter), _.Cells(NumberOfRows + 1, Counter)) = _Application.Transpose(X.Values)End WithCounter = Counter + 1NextEnd Sub