从脱链接的 Excel 图中提取数据

dan*_*nny 8 vba microsoft-word microsoft-excel

我有一个 Word 文件,里面有一些 Excel 图。不幸的是,我丢失了原始的 excel 绘图,并且 word 文件现在已“取消链接”。

有没有办法检索丢失的绘图数据?只是将绘图复制回 Excel 似乎不起作用,但我可以看到数据仍在某处,因为将鼠标悬停在绘图上的一个点上会显示值。

tex*_*nic 7

我不得不对 PowerPoint 2010 演示文稿做同样的事情。我认为作为一个长期的解决方案,VBA 脚本是一个很好的方法。但是由于某种原因我无法让它在我的情况下工作,我只需要获取一次数据。(作为结构化解决方案,您可能首先不应该丢失原始数据。)这是可以做的:

  1. 重命名PPT文件以具有.zip扩展名
  2. 将生成的存档解压缩到一个文件夹中。
  3. 该文件夹应包含一个ppt/charts/子文件夹。
  4. chart1.xml使用 Excel作为 XML 表打开。(只需打开文件,Excel 就会询问您如何打开它。)
  5. 该文档将有很多列,其中许多列在每一行中具有相同的值。一列将是图表的 x 值。您可以通过将值与您在演示文稿中看到的内容进行比较来找到它。y 值在另一列中,在我的情况下也远低于 x 值(因此 y 数据列中的第一行是空的)。
  6. 我发现将 x 和 y 值复制粘贴到新文档中最容易。
  7. 要验证数据,请选择粘贴的数据并执行“插入”>“图表”>“散点”>“使用平滑​​线”。第一列应该是 x 值,第二列应该是 y 值。
  8. 我发现使用原始文件中的一条曲线创建新演示文稿更容易​​。但是,如果有很多图表,您可能还会chart2.xml在解压后的文件夹中看到等。如果图表包含超过 1 条线,则必须在 XML 中查找其他数据。


s_a*_*s_a 2

您必须使用 VBA 来提取数据。以下是一种可能的 VBA 解决方案: http: //peltiertech.com/WordPress/extract-chart-data/。它包括这段代码:

Sub ExtractChartData()
   Dim iSrs As Long
   Dim cht As Chart
   Dim srs As Series
   Dim ws As Worksheet

   If ActiveChart Is Nothing Then Exit Sub

   Set cht = ActiveChart
   Set ws = Worksheets.Add
   For iSrs = 1 To cht.SeriesCollection.Count
     Set srs = cht.SeriesCollection(iSrs)
     On Error Resume Next
     ws.Cells(1, 2 * iSrs).Value = srs.Name
     ws.Cells(2, 2 * iSrs - 1).Resize(srs.Points.Count).Value = _
         WorksheetFunction.Transpose(srs.XValues)
     ws.Cells(2, 2 * iSrs).Resize(srs.Points.Count).Value = _
         WorksheetFunction.Transpose(srs.Values)
   Next
 End Sub
Run Code Online (Sandbox Code Playgroud)

这是另一个可能的解决方案,直接来自 Microsoft: http: //support.microsoft.com/kb/300643(也涉及 VBA)