为XLS,XLSX和XLSM编写的macros之间是否存在兼容性问题?

为XLS,XLSX和XLSM编写的macros之间是否存在兼容性问题? 同一个macros是否适用于所有的工作簿?

这些格式之间有显着的差异:

  • .XLS旨在用于Excel 2003及更高版本,因此您的VBA代码需要向后兼容以前版本的Excel(<2007)
  • .XLSX不能存储VBA代码的Excel 2007格式。
  • .XLSM.XLSB是Excel 2007格式,允许您使用工作簿保存VBA代码 。 正如Sydenam所说,这两者之间的区别在于工作簿的存储方式。

简而言之: .XLSB二进制格式 (等同于2007+版本的.XLS ),而.XLSMOOXML格式。

请参阅何时应该使用xlsm或xlsb格式? 了解更多信息。


附录向后兼容

我看不出有什么简单的方法来告诉你它是如何向后兼容的,我们不能那么通用。 您可以在Ozgrid上看到在Excel 2007中添加的新方法和属性。您还可以在这里find有关如何在Excel 2007上开发的一些提示。

Ozgrid页面会给你Excel 2007的新元素 ,然后会告诉你什么,如果你想要向后兼容你不应该使用。

有关在Excel 2003中不可用的方法列表,请参阅JMax的响应。

一般来说,您应该编写您愿意支持的最低版本的Excel代码。 例如:如果您支持Excel 2000-2010,您的代码应该为Excel 2000编写。

但请记住,有些方法可能会在以后的版本中被弃用。

例如,我会完全避免使用FileSearch (在Excel 2007中不build议使用),而是使用Dir代替。

您的代码也应该testing本地Excel版本,并根据版本使用条件编译。

有关条件编译的帮助,请参阅使用条件编译 。

另外请记住,XLSX文件不能保存macros。 因此,如果包含macros代码,则不应以这种格式保存文件。

Excel使用Visual Basic for Applications(VBA)作为macros。 不同文件types之间的主要区别在于数据如何存储( 编辑&重要的 XLSX无法保存macros,问题XLSM中的格式和XLS可以将macros保存在工作簿中)。 这是Excel和VBA处理macros,所以这三种文件格式之间没有问题。