修复损坏的工作簿

打开已损坏的工作簿时,Excel 将自动启动“文件恢复”模式,还会尝试重新打开并同时修复工作簿。

Excel 并非总能自动启动“文件恢复”模式。如果无法打开已损坏的工作簿,可尝试手动修复工作簿。

修复工作簿不成功时,还可尝试其他方法来恢复工作簿数据。作为预防措施,建议经常保存工作簿并在每次保存时创建一个备份副本。或者可指定 Excel 在特定时间间隔自动创建恢复文件。这样,即使原始工作簿被意外删除或损坏,你也有权访问完好的工作簿副本。

手动修复损坏的工作簿

  1. “文件”选项卡上,单击“打开”

  2. 在 Excel 2013 或 Excel 2016 中,单击电子表格所在位置,然后单击“浏览”。

  3. 在“打开”对话框中,选择要打开的已损坏工作簿。

  4. 单击“打开”按钮旁边的箭头,然后单击“打开并修复”

  5. 请执行下列操作之一:

    • 要尽可能多地恢复工作簿数据,请单击“修复”。

    • 若要在尝试修复工作簿失败时从工作簿提取值和公式,请单击“提取数据”。

从损坏的工作簿恢复数据

下列方法有助于挽救可能会丢失的数据。如果一种方法不成功,可尝试另一种。如果使用这些方法无法恢复数据,还可用第三方软件解决方案尝试恢复工作簿数据。

重要: 如果磁盘错误或网络错误导致无法打开工作簿,请在尝试使用下列任意恢复选项之前,将工作簿移至不同的硬盘驱动器,或从网络移至本地磁盘。

  • 若要在工作簿在 Excel 中打开时恢复数据,请执行以下操作之一:

    • 将工作簿还原为上次保存的版本    如果正在编辑工作表,而此工作表在你保存更改之前变得损坏,可通过将其还原为上次保存的版本来恢复原始工作表。

      若要将工作簿还原为上次保存的版本,请执行以下操作:

      1. “文件”选项卡上,单击“打开”

      2. 双击在 Excel 中打开的工作簿的名称。

      3. 单击“是”,重新打开该工作簿。

        注意: 工作簿将还原为上次保存的工作簿版本。这将放弃所有可能导致工作簿损坏的更改。有关如何恢复工作簿早期版本的详细信息,请参阅自动保存和恢复 Office 文件

    • 以 SYLK(符号链接)格式保存工作簿    通过以 SYLK 格式保存工作簿,你可以筛选出损坏的元素。SYLK 格式通常用于删除打印机损坏元素。

      若要以 SYLK 格式保存工作簿,请执行以下操作:

      1. 单击“文件”选项卡,然后单击“另存为”。

      2. “保存类型”列表中,单击“SYLK(符号链接)”,然后单击“保存”

        注意: 使用 SYLK 文件格式时,仅会保存工作簿中的活动工作表。

      3. 如果消息提示所选文件类型不支持包含多个工作表的工作簿,请单击“确定”,以仅保存活动工作表。

      4. 如果消息提示工作簿可能包含与 SYLK 格式不兼容的功能,请单击“”。

      5. “文件”选项卡上,单击“打开”

      6. 选择保存的 .slk 文件,然后单击“打开”。

        注意: 若要查看 .slk 文件,请单击“文件类型”列表中的“所有文件”或“SYLK 文件”。

      7. 在“文件”选项卡上,单击“另存为”。

      8. 在“保存类型”框中,单击“Excel 工作簿”。

      9. 在“文件名”框中键入工作簿的新名称以创建副本,而不替换原始工作簿,然后单击“保存”。

        注意: 由于此格式仅会保存工作簿中的活动工作表,因此必须重复打开损坏的工作簿并分别保存每个工作表。

  • 若要在无法在 Excel 中打开工作簿时恢复数据,请执行以下操作之一:

    • 将 Excel 中的计算选项设置为手动    若要打开工作簿,请尝试将计算设置从自动更改为手动。因为这样不会重新计算工作簿,或许能够打开它。

      若要将 Excel 中的计算选项设置为手动,请执行以下操作:

      1. 确保在 Excel 中打开一个新的空白工作簿。如果打开的不是空白工作簿,请执行以下操作:

    • 在“文件”选项卡上,单击“新建”。

    • 在“可用模板”下,单击“空白工作薄”。

      1. 在“文件”选项卡上,单击“选项”。

      2. 在“公式”类别中的“计算选项”下,单击“手动”。

      3. 单击“确定”。

      4. “文件”选项卡上,单击“打开”

      5. 选择损坏的工作簿,然后单击“打开”。

    • 使用外部引用链接到损坏的工作簿    若要只从工作簿检索数据,而不检索公式或计算值,可使用外部引用链接到损坏的工作簿。

      若要使用外部引用链接到损坏的工作簿,请执行以下操作:

      1. “文件”选项卡上,单击“打开”

      2. 选择包含损坏工作簿的文件夹,复制损坏工作簿的文件名,然后单击“取消”。

      3. 单击“文件”选项卡,然后单击“新建”。

      4. 在“可用模板”下,单击“空白工作薄”。

      5. 在新工作簿的单元格 A1 中,键入“=文件名!A1”,其中“文件名”是在步骤 2 中复制的损坏工作簿的名称,然后按 ENTER。

        提示: 必须只输入工作簿的名称 - 而不必键入文件扩展名。

      6. 如果出现“更新值”对话框,请选择损坏的工作簿,然后单击“确定”。

      7. 如果出现“选择工作表”对话框,请选择适当的工作表,然后单击“确定”

      8. 选择单元格 A1。

      9. “开始”选项卡上的“剪贴板”组中,单击“复制”

      10. 选择大小与损坏工作簿中包含数据的单元格区域大致相同的区域(从单元格 A1 开始)。

      11. 在“开始”选项卡上的“剪贴板”组中,单击“粘贴”。

      12. 保持单元格区域的选中状态,在“开始”选项卡的“剪贴板”组中,再次单击“复制”。

      13. 在“开始”选项卡的“剪贴板”组中,单击“粘贴”下的箭头,然后单击“粘贴值”下的“”。

        注意: 粘贴值可删除指向损坏的工作簿的链接,只保留数据。

    • 使用宏从损坏的工作簿中提取数据    如果图表链接到损坏的工作簿,可使用宏提取图表的源数据。

      若要使用宏,请执行以下操作:

      1. 在模块工作表中输入下面的宏代码:

        Sub GetChartValues() 
        Dim NumberOfRows As Integer
        Dim X As Object
        Counter = 2
        ' Calculate the number of rows of data.
        NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)
        Worksheets("ChartData").Cells(1, 1) = "X Values"
        ' Write x-axis values to worksheet.
        With Worksheets("ChartData")
        .Range(.Cells(2, 1), _
        .Cells(NumberOfRows + 1, 1)) = _
        Application.Transpose(ActiveChart.SeriesCollection(1).XValues) 
        End With
        ' Loop through all series in the chart and write their values to
        ' the worksheet.
        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
      2. 将新工作表插入工作簿中并将其重命名为 ChartData。

      3. 选择您要从中提取基础数据值的图表。

      4. 注意: 图表可以嵌入在工作表中或嵌入在单独的图表工作表中。

      5. 运行 GetChartValues 宏。

      6. 图表中的数据将置于 ChartData 工作表中。

自动保存工作簿的备份副本

即使原始工作簿被意外删除或损坏,自动保存工作簿的备份副本也有助于确保你能够访问完好的工作簿副本。

  1. 在“文件”选项卡上,单击“另存为”。

  2. 在 Excel 2013 或 Excel 2016 中,单击电子表格所在位置,然后单击“浏览”。

  3. 单击“工具”(位于“保存”旁)旁边的下拉箭头,然后单击“常规选项”。

  4. 选中“始终创建备份”复选框。

若要深入了解如何保存和恢复工作簿早期版本,以及如何恢复新工作簿(未保存过的),请参阅恢复 Office 文件

自动在特定时间间隔创建恢复文件

即使原始工作簿被意外删除或损坏,将 Excel 配置为定期创建工作簿的恢复文件也有助于确保你能够访问完好的工作簿副本。

  1. 在“文件”选项卡上,单击“选项”。

  2. 在“保存”类别中的“保存工作簿”下,选中“保存自动恢复信息时间间隔”复选框,然后输入分钟数。

  3. “自动恢复文件位置”框中,输入要用于保存恢复文件的位置。

  4. 确保未选中“仅禁用此工作簿的自动恢复”复选框。

若要深入了解如何保存和恢复工作簿早期版本,以及如何恢复新工作簿(未保存过的),请参阅恢复 Office 文件

手动修复损坏的工作簿

  1. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“打开”。

  2. 在“打开”对话框中,选择要打开的已损坏工作簿。

  3. 单击“打开”按钮旁边的箭头,然后单击“打开并修复”

  4. 请执行下列操作之一:

    • 要尽可能多地恢复工作簿数据,请单击“修复”。

    • 若要在尝试修复工作簿失败时从工作簿提取值和公式,请单击“提取数据”。

从损坏的工作簿恢复数据

下列方法有助于挽救可能会丢失的数据。如果一种方法不成功,可尝试另一种。如果使用这些方法无法恢复数据,还可用第三方软件解决方案尝试恢复工作簿数据。

重要: 如果磁盘错误或网络错误导致无法打开工作簿,请在尝试使用下列任意恢复选项之前,将工作簿移至不同的硬盘驱动器,或从网络移至本地磁盘。

  • 若要在工作簿在 Excel 中打开时恢复数据,请执行以下操作之一:

    • 将工作簿还原为上次保存的版本    如果正在编辑工作表,而此工作表在你保存更改之前变得损坏,可通过将其还原为上次保存的版本来恢复原始工作表。

      若要将工作簿还原为上次保存的版本,请执行以下操作:

      1. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“打开”。

      2. 双击在 Excel 中打开的工作簿的名称。

      3. 单击“是”,重新打开该工作簿。

        注意: 工作簿将还原为上次保存的工作簿版本。这将放弃所有可能导致工作簿损坏的更改。

    • 以 SYLK(符号链接)格式保存工作簿    通过以 SYLK 格式保存工作簿,你可以筛选出损坏的元素。SYLK 格式通常用于删除打印机损坏元素。

      若要以 SYLK 格式保存工作簿,请执行以下操作:

      1. 单击“Microsoft Office 按钮Office 按钮图像 ,然后指向“另存为”旁边的箭头。

      2. “保存类型”列表中,单击“SYLK(符号链接)”,然后单击“保存”

        注意: 使用 SYLK 文件格式时,仅会保存工作簿中的活动工作表。

      3. 如果消息提示所选文件类型不支持包含多个工作表的工作簿,请单击“确定”,以仅保存活动工作表。

      4. 如果消息提示工作簿可能包含与 SYLK 格式不兼容的功能,请单击“”。

      5. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“关闭”。

      6. 如果消息提示你保存所做的更改,请单击“”。

      7. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“打开”。

      8. 选择保存的 .slk 文件,然后单击“打开”。

        注意: 若要查看 .slk 文件,请单击“文件类型”列表中的“所有文件”或“SYLK 文件”。

      9. 单击“Microsoft Office 按钮Office 按钮图像 ,然后指向“另存为”旁边的箭头。

      10. 在“保存类型”框中,单击“Excel 工作簿”。

      11. 在“文件名”框中键入工作簿的新名称以创建副本,而不替换原始工作簿,然后单击“保存”。

        注意: 由于此格式仅会保存工作簿中的活动工作表,因此必须重复打开损坏的工作簿并分别保存每个工作表。

  • 若要在无法在 Excel 中打开工作簿时恢复数据,请执行以下操作之一:

    • 将 Excel 中的计算选项设置为手动    若要打开工作簿,请尝试将计算设置从自动更改为手动。因为这样不会重新计算工作簿,或许能够打开它。

      若要将 Excel 中的计算选项设置为手动,请执行以下操作:

      1. 确保在 Excel 中打开一个新的空白工作簿。如果打开的不是空白工作簿,请执行以下操作:

        1. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“新建”。

        2. 在“新建空白”下,单击“空白文档”。

      2. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“Excel 选项”。

      3. 在“公式”类别中的“计算”选项下,单击“手动”。

      4. 单击“确定”。

      5. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“打开”。

      6. 选择损坏的工作簿,然后单击“打开”。

    • 使用外部引用链接到损坏的工作簿    若要只从工作簿检索数据,而不检索公式或值,可使用外部引用链接到损坏的工作簿。

      若要使用外部引用链接到损坏的工作簿,请执行以下操作:

      1. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“打开”。

      2. 在“查找位置”框中,选择包含损坏工作簿的文件夹,然后单击“取消”。

      3. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“新建”。

      4. 在“新建空白”下,单击“空白文档”。

      5. 在新工作簿的单元格 A1 中,键入“=文件名!A1”,其中“文件名”是损坏工作簿的名称,然后按 ENTER。

        提示: 必须只输入工作簿的名称 - 而不必键入扩展名。

      6. 单击工作簿,然后单击“确定”。

      7. 如果出现“选择工作表”对话框,请选择适当的工作表,然后单击“确定”

      8. 选择单元格 A1。

      9. “开始”选项卡上的“剪贴板”组中,单击“复制”

        键盘快捷方式   您也可以按 Ctrl+C。

      10. 选择大小与损坏工作簿中包含数据的单元格区域大致相同的区域。

      11. 在“开始”选项卡上的“剪贴板”组中,单击“粘贴”。

      12. 保持单元格区域的选中状态,在“开始”选项卡的“剪贴板”组中,再次单击“复制”。

      13. “开始”选项卡上的“剪贴板”组中,单击“粘贴”下的箭头,然后单击“选择性粘贴”

      14. 在“粘贴”下选择“”,然后单击“确定”。

        注意: 粘贴值可删除指向损坏的工作簿的链接,只保留数据。

    • 在 Microsoft Office Word 或 Microsoft 写字板中打开损坏的工作簿    如果安装了 Microsoft Office Excel 转换器,也许可以在 Word 中打开工作簿。如果在 Word 中打开工作簿,则可以恢复数据。此方法无法用于恢复模块工作表、对话框工作表、图表工作表、宏表或任何内嵌图表。也无法恢复单元格公式。仅可恢复损坏工作簿的单元格中当前显示的那些公式的结果。

      还可以在写字板中打开 Excel 工作簿。如果成功打开工作簿,也许可以在模块和类模块中恢复 Microsoft Visual Basic​​ 代码。可搜索单词“Sub”或“Function”以查找代码。

    • 使用宏从损坏的工作簿中提取数据    如果图表链接到损坏的工作簿,可使用宏提取图表的源数据。

      若要使用宏,请执行以下操作:

      1. 在模块工作表中输入下面的宏代码:

        在模块工作表中输入下面的宏代码:

        Sub GetChartValues() 
        Dim NumberOfRows As Integer
        Dim X As Object
        Counter = 2
        ' Calculate the number of rows of data.
        NumberOfRows = UBound(ActiveChart.SeriesCollection(1).Values)
        Worksheets("ChartData").Cells(1, 1) = "X Values"
        ' Write x-axis values to worksheet.
        With Worksheets("ChartData")
        .Range(.Cells(2, 1), _
        .Cells(NumberOfRows + 1, 1)) = _
        Application.Transpose(ActiveChart.SeriesCollection(1).XValues) 
        End With
        ' Loop through all series in the chart and write their values to
        ' the worksheet.
        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
      2. 将新工作表插入工作簿中并将其重命名为 ChartData。

      3. 选择您要从中提取基础数据值的图表。

        注意: 图表可以嵌入在工作表中或嵌入在单独的图表工作表中。

      4. 运行 GetChartValues97 宏。

        图表中的数据将置于 ChartData 工作表中。

自动保存工作簿的备份副本

  1. 单击“Microsoft Office 按钮Office 按钮图像 ,然后指向“另存为”旁边的箭头。

  2. 单击“工具”旁边的箭头,然后单击“常规选项”。

  3. 选中“始终创建备份”复选框。

自动在特定时间间隔创建恢复文件

  1. 单击“Microsoft Office 按钮Office 按钮图像 ,然后单击“Excel 选项”。

  2. 在“保存”类别中的“保留工作簿的备份信息”下,选中“保存自动恢复信息时间间隔”复选框,然后输入分钟数。

  3. “自动恢复文件位置”框中,输入要用于保存恢复文件的位置。

  4. 确保未选中“仅禁用此工作簿的自动恢复”复选框。

需要更多帮助吗?

可随时在 Excel 技术社区中咨询专家,在解答社区获得支持,或在 Excel User Voice 上建议新功能或功能改进。

扩展你的技能
了解培训
抢先获得新功能
加入 Office 预览体验计划

此信息是否有帮助?

谢谢您的反馈!

谢谢你的反馈! 可能需要转接到 Office 支持专员。

×