【问题标题】:Open excel 2007 excel files and save as 97-2003 formats in VBA打开 excel 2007 excel 文件并在 VBA 中另存为 97-2003 格式
【发布时间】:2010-01-26 21:12:25
【问题描述】:

我有一个奇怪的情况,我有一组 excel 文件,扩展名为 .xls.,在一个目录中,我可以在 Excel 2007 中打开所有这些文件。奇怪的是我无法打开它们在 Excel 2003 中,在同一台机器上,没有在 2007 年首先打开文件并将文件保存为“Excel 97-2003 工作簿”。在我将文件保存为 Excel 2007 中的“Excel 97-2003 工作簿”之前,当我在 2003 年打开 excel 文件时,我收到文件不是可识别格式的错误。

所以我的问题是:如果我已经在 2007 年打开了 excel 文件,并且我已经将打开文件的文件名存储在一个变量中,那么我如何以编程方式模仿上“办公室按钮”的动作在右上角并选择“另存为”,然后选择“Excel 97-2003 工作簿”?我已经尝试过类似下面的方法,但它根本不保存文件:

ActiveWorkbook.SaveAs TempFilePath & TempFileName & ".xls", FileFormat:=56

感谢您的帮助或指导!

【问题讨论】:

  • 我也有同样的问题。一个 my_file_with_macro.xlsm 文件生成一些 *.xls 文件以与 2003 excel 兼容,我仍然在 Office 2003 下运行的同事无法打开这些文件。自从你在这里提出这个问题后,你得到任何解决方案了吗?
  • 实际上,我刚刚找到了一个解决方案(我并不觉得它很干净,但是......无论如何,它对我有用)。 Application.DisplayAlerts = False Set resultFile = Workbooks.Open(resultFileName) resultFile.CheckCompatibility = False resultFile.SaveAs Filename:=resultFileName, FileFormat:=xlExcel8 resultFile.Close Application.DisplayAlerts = True

标签: excel vba save-as


【解决方案1】:

听起来您应该尝试兼容包,但我不明白为什么您的 vba 不起作用。我尝试了以下方法,效果很好:

ThisWorkbook.SaveAs "C:\test" & ".xls", FileFormat:=56

【讨论】:

  • 我已经安装了兼容包,但仍然无法使用。不知道为什么。如果我取出 FileFormat:=56 它保存得很好但是当我添加它时根本不会保存。有什么想法吗?
  • 如果您尝试以不同的文件名“另存为”会怎样?
  • 我刚刚尝试过,但没有成功。我单步执行了代码并确保它命中了那行代码并且确实如此,所以我不确定它是否与我机器上的当前设置有关或什么。我很茫然。
  • 我正在测试它的机器安装了 2003 和 2007(我在 2007 年运行了代码),但我不确定这会有所作为。
  • 我在另一台与我的设置相似的机器上尝试了它(安装了 2003 和 2007)并且它工作正常。很奇怪。很抱歉浪费您的时间,我想这只是我的机器设置的一个问题,原因很奇怪。
【解决方案2】:

此页面:http://www.rondebruin.nl/saveas.htm 对我很有帮助。如果您从 2007 年保存到 2003 年或更早的版本,则必须声明不同的文件类型。

【讨论】:

    【解决方案3】:

    这是一个对我有用的解决方案。基本上,它会再次打开同一个文件并模拟 Office 按钮中的“另存为”,与 Excel 97-2003 的兼容性。但是,它确实隐藏了任何警报,并指定 Excel 不检查兼容性,这会生成一个阻止您在批处理模式下静默工作的弹出窗口。

    'before that, my code was using Workbooks.Add method, saving and then closing.
    'just add the following after your last operation, once your file is closed where
    'of course "resultFile" is the workbook to be saved, and resultFileName the path
    
    Application.DisplayAlerts = False
    Set resultFile = Workbooks.Open(resultFileName)
    resultFile.CheckCompatibility = False
    resultFile.SaveAs Filename:=resultFileName, FileFormat:=xlExcel8
    resultFile.Close
    Application.DisplayAlerts = True
    

    【讨论】:

      【解决方案4】:

      我不清楚您是否只是想转换所有这些文件,或者您是否正在开发需要这样做的应用程序。

      如果是前者,看看这是否有帮助:http://www.microsoft.com/downloads/details.aspx?familyid=941b3470-3ae9-4aee-8f43-c6bb74cd1466&displaylang=en

      它允许您在早期版本的 Office 中打开 Office 2007。

      【讨论】:

      • 不要问我为什么,但是兼容包不起作用。我正在尝试创建一个应用程序来转换文件。
      【解决方案5】:

      关闭警报也可以。 Application.DisplayAlerts = False Workbooks.Add.SaveAs 名称,文件格式:=56 * 如有必要,对文件进行修改 Activeworkbook.close SaveChanges:=true Application.DisplayAlerts = True

      【讨论】:

        【解决方案6】:
        'this script is created by me. But usable to vbscript ( vbs ).
        UTILIZAR EL ARCHIVO INICIAL.XLSX COMO COMODÍN PARA CREAR UN ARCHIVO DATOS.XLS.
        
        'Creado por Juan Fernando Arango Trujillo
        Set app = CreateObject("Excel.Application")
        app.Visible = False
        app.DisplayAlerts = False
        Set fso = CreateObject("Scripting.FileSystemObject")
        Set wb = app.Workbooks.Open("C:\Users\Juan\Documents\Inicial.xlsx") 
        wb.SaveAs "C:\Users\Juan\Documents\Datos.xls",  -4143
        wb.Close True
        app.Quit
        Set app = Nothing
        Set fso = Nothing
        

        'FIN DEL PROCESO DE CREACIÓN DE DATOS.XLS

        【讨论】:

        • 如果你能翻译一下apish并添加一些解释就好了。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 2019-02-10
        相关资源
        最近更新 更多