【问题标题】:Excel VBA: SaveCopyAs with different file extenstionExcel VBA:具有不同文件扩展名的 SaveCopyAs
【发布时间】:2017-08-02 08:10:12
【问题描述】:

我有一个扩展名为 .xlsb 的 Excel 文件,并使用它的宏根据内容生成其他几个 Excel 工作表。宏的工作方式是更改原始 Excel 文件,然后使用SaveCopyAs 方法保存生成的 Excel 工作表。

生成的 Excel 工作表应以 .xlsx 扩展名和格式保存。

使用ActiveWorkbook.SaveCopyAs "C:\TEMP\XXXX.XLSX" 方法对我不起作用,因为虽然它确实更改了扩展名,但不会更改文件格式,因此当用户打开生成的 Excel 文件时,他会收到一个警告消息(类似于“文件扩展名和格式不匹配”​​)。 SaveCopyAs 方法没有任何其他参数。

如何保存我的原始 .xlsb 文件的副本,同时将扩展名和格式更改为 .xlsx?

注意:Workbook.SaveAs 方法确实有一个 fileformat 选项,不确定这是否有帮助/相关。

【问题讨论】:

  • 你有什么理由要复制你的文件吗?您不能只创建一个新工作簿并直接写入新工作簿中的工作表或复制新工作簿中的内容吗?
  • 没有什么特别的原因,只是我真的是VBA的菜鸟。如果生成内容后只需创建一个新的 Excel 表,将其中一个选项卡从原始文件复制到这个新文件,然后以正确的文件名保存新文件,那将是完全可行的。你认为你可以给我一个示例代码吗?
  • 如果您可以提供您的代码,我们可以提供帮助

标签: vba excel


【解决方案1】:

根据 Zac 的提示,在我的情况下,将带有相关更改的选项卡复制到新创建的 excel 文件中,然后使用新文件名保存它是一个更好的解决方案。

ThisWorkbook.Sheets("myTab").Copy
ActiveWorkbook.SaveAs Filename:="c:\temp\xyz.xlsx", FileFormat:=51
ActiveWorkbook.Close

这对我来说实际上是一个更好的解决方案,因为最终用户真的只需要生成的选项卡,而不是原始 excel 文件中的宏或任何其他数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 2012-11-13
    • 2023-01-25
    • 2018-12-12
    • 1970-01-01
    相关资源
    最近更新 更多