2017-08-02 537 views
0

我有一个带有.xlsb扩展名的Excel文件,并使用它的宏根据内容生成其他几个Excel工作表。这些宏以一种方式工作,即他们更改原始Excel文件,然后使用SaveCopyAs方法保存生成的Excel工作表。Excel VBA:SaveCopyAs具有不同的文件扩展名

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

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

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

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

+1

是否有任何理由将您的文件复制一份?您是否可以不只是创建新的工作簿,而是直接写入新工作簿中的工作表或复制新工作簿中的内容? – Zac

+0

除了我真的是VBA的新手之外,没有什么特别的理由。如果一旦生成了内容,只需创建一个新的Excel表格,将原始文件中的一个标签复制到这个新文件中,然后将新文件保存在正确的文件名下,就完全可行。你认为你可以给我一个示例代码吗? – Istvanb

+0

如果您可以提供您的代码,我们可以提供帮助 – Zac

回答

0

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

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

其实,这是我作为终端用户很多更好的解决方案确实需要产生的标签,而不是宏或原单的任何其他数据的Excel文件。

相关问题