我有一个 Word 文件,里面有一些 Excel 图。不幸的是,我丢失了原始的 Excel 图,并且 Word 文件现在已“解除链接”。
有没有办法找回丢失的图表数据?仅将图表复制回 Excel 似乎不起作用,但我可以看到数据仍然在某处,因为将鼠标悬停在图表上的某个点上会显示值。
答案1
我必须对 PowerPoint 2010 演示文稿执行同样的操作。我认为作为长期解决方案,VBA 脚本是一个不错的选择。但是出于某种原因,我无法让它在我的案例中发挥作用,而且我只需要获取一次数据。(作为结构性解决方案,您可能首先不应该丢失原始数据。)可以这样做:
- 将 PPT 文件重命名为具有
.zip
扩展名 - 将生成的档案解压到一个文件夹中。
- 该文件夹应包含一个
ppt/charts/
子文件夹。 chart1.xml
使用 Excel打开作为 XML 表。(只需打开该文件,Excel 就会询问您如何打开它。)- 文档将包含很多列,其中许多列的每一行的值都相同。其中一列是图表的 x 值。您可以通过将值与演示文稿中看到的值进行比较来找到它。y 值在另一列中,在我的情况下也远低于 x 值(因此 y 数据列中的前几行为空)。
- 我发现最简单的方法是将 x 和 y 值复制粘贴到新文档中。
- 要验证数据,请选择粘贴的数据并执行“插入”>“图表”>“散点图”>“使用平滑线”。第一列应为 x 值,第二列应为 y 值。
- 我发现使用原始文件中的一条曲线创建新演示文稿更加容易。但是,如果有很多图表,您可能还会
chart2.xml
在解压后的文件夹中看到等。如果图表包含多条线,则必须在 XML 中查找其他数据。
答案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
以下是来自 Microsoft 的另一种可能的解决方案:http://support.microsoft.com/kb/300643(也涉及 VBA)
答案3
如果没有大量数据的话,有一个相当糟糕且粗糙的解决方案。
选择系列,选择图表工具中的布局选项卡,添加数据标签,然后您可以简单地读取值并将其键入到您需要的位置。