是否有可能自动修复损坏的Excel工作簿?

我正在使用SPSS 15创build多个Excel报表,然后使用Excelmacros进行整合。 不幸的是,特定的SPSS版本生成的Excel文件不易读取Excel 2007及以上。 Excel 2003会将这些文件捣毁,但是更新的Excel版本会显示两条错误消息。 首先是“Excel在filename.xls中发现不可读的内容,你是否想恢复这个工作簿的内容?”。 点击“是”后,出现“文件错误:数据可能已丢失”。 不幸的是,这些错误消息导致我的macros退出第一个文件,错误代码为1004.这是我用来打开我的Excel文件的代码:

If Len(Dir(ThisWorkbook.Path + "\filename.xls")) <> 0 Then Workbooks.Open Filename:=ThisWorkbook.Path + "\filename.xls" End If 

我与IBM(SPSS供应商)进行了核对,他们告诉我这个问题已经在SPSS 16中解决了,但是由于商业原因,升级不在现场。 现在有一个手动解决方法,涉及到打开文件和再次保存,但有几十个文件显然没有乐趣。 因此,我正在寻找一种方法来自动修复我的macros中的腐败工作簿。

更多信息:我们正在使用Excel 2010,Excel 2003不可用。 示例文件在这里可用: https : //onedrive.live.com/?cid=52106BC267261CBF&id=52106BC267261CBF!292

该文件似乎相当麻烦,BIFFvalidation工具报告不正确的BOF标题,所以其令人印象深刻的Excel 2003可以打开它。

我可以通过Jet OLEDB提供程序将您的文件作为ISAM数据库读取,因此您可以select以这种方式读取文件(或使用此方法生成CSV文件进行处理)

 Dim cn As Object, rs As Object Set cn = CreateObject("ADODB.Connection") cn.Open "Provider=MICROSOFT.JET.OLEDB.4.0;Data Source=C:\temp\DebugFile.xls;Extended Properties=""Excel 8.0;HDR=Yes;""" Set rs = cn.Execute("SELECT * FROM [DebugFile$]") Do While Not rs.EOF Debug.Print rs.Fields(0).Value rs.MoveNext Loop