分享

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

 JT_man 2010-05-09

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

2009年5月25日

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

先在含有图表的文件中打开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

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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多