提取丢失数据源的图表中的数据

来源:百度文库 编辑:神马文学网 时间:2024/04/29 21:51:03

提取丢失数据源的图表中的数据

2009年5月25日没有评论

如果图表从另外一个文件的数据创建或链接到另外一个文件,当该文件因损坏不可用或被删除后,可以使用微软帮助中的这个方法来提取图表数据。

先在含有图表的文件中打开VBE窗口,添加新模块,将下面的过程放入模块中。
在工作表中选择图表,运行宏过程GetChartValues,将在工作表“ChartData”(如果不存在则创建该工作表)中放置图表的源数据。

Sub GetChartValues()Dim NumberOfRows As IntegerDim X As ObjectDim Counter As IntegerDim strSheet As String Counter = 2 ' 计算数据源总行数    NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)strSheet = ActiveSheet.Name     ' 保存当前工作表名称' 新建工作表并更名为"ChartData"    Sheets.AddOn Error Resume NextActiveSheet.Name = "ChartData"' 如果工作表"ChartData"已经存在,则删除新建的工作表    If Err.Description <> "" ThenApplication.DisplayAlerts = FalseActiveSheet.DeleteApplication.DisplayAlerts = TrueEnd IfWorksheets("ChartData").SelectCells.ClearWorksheets("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.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

示例文件下载:Box.net | SkyDrive