gpt4 book ai didi

vba - 是否可以自动修复损坏的 Excel 工作簿?

转载 作者:行者123 更新时间:2023-12-02 01:42:59 26 4
gpt4 key购买 nike

我正在使用 SPSS 15 创建多个 Excel 报告,然后使用 Excel 宏对其进行合并。不幸的是,特定的 SPSS 版本生成的 .xls 文件对于 Excel 2007 及更高版本来说不容易读取。 Excel 2003 可以很好地处理这些文件,但较新的 Excel 版本会显示两条错误消息。首先是“Excel 在 filename.xls 中发现不可读的内容。是否要恢复此工作簿的内容?”。单击"is"后,会出现“文件错误:数据可能已丢失”。不幸的是,这些错误消息导致我的宏在第一个文件处退出,错误代码为 1004。这是我用来打开 Excel 文件的代码:

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

我咨询了 IBM(SPSS 供应商),他们告诉我,这个特定问题已在 SPSS 16 中修复,但由于业务原因,无法进行升级。现在有一个手动解决方法,涉及打开文件并再次保存,但对于数十个文件来说,这显然没有什么乐趣。因此,我正在寻找一种方法来自动修复宏中那些损坏的工作簿。

更多信息:我们在工作中使用 Excel 2010,Excel 2003 不可用。此处提供了示例文件:https://onedrive.live.com/?cid=52106BC267261CBF&id=52106BC267261CBF!292

最佳答案

该文件看起来相当困惑,BIFF 验证工具报告了一个不正确的 BOF header ,因此令人印象深刻的 Excel 2003 完全可以打开它。

我可以通过 Jet OLEDB 提供商将您的文件作为 ISAM 数据库读取,因此您可以选择以这种方式读取文件(或使用此方法生成 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

关于vba - 是否可以自动修复损坏的 Excel 工作簿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24040386/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com