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

时间:2011-11-10 10:09:55

标签: excel vba

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

3 个答案:

答案 0 :(得分:12)

这些格式之间存在显着差异:

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

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

有关详细信息,请参阅When should the xlsm or xlsb formats be used?


向后兼容性附录

我看不出任何简单的方法告诉你如何向后兼容,我们不能 泛型。您可以在Ozgrid上看到Excel 2007中添加的新方法和属性。您还可以找到here有关如何在Excel 2007上进行开发的一些提示。

Ozgrid页面将为您提供Excel 2007的新元素,然后如果您想要向后兼容,则会告诉您不应该使用的内容。

答案 1 :(得分:3)

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

通常,您应该为您愿意支持的最低版本的Excel编写代码。例如:如果您支持Excel 2000-2010,则应为Excel 2000编写代码。

但请注意,某些方法可能会在以后的版本中弃用。

例如,我会完全避免使用 FileSearch (在Excel 2007中弃用)并使用 Dir

您的代码也应该测试本地Excel版本并使用条件编译,具体取决于版本。

有关条件编译的帮助,请参阅Using Conditional Compilation

另请记住,XLSX文件无法保存宏。因此,如果文件包含宏代码,则不应以此格式保存文件。

答案 2 :(得分:1)

Excel使用 Visual Basic for Applications(VBA)作为宏。不同文件类型之间的主要区别在于数据的存储方式(编辑和重要 XLSX无法保存宏,问题中的格式XLSM和XLS可以在工作簿中保存宏)。它是excel和VBA来处理宏,因此它们在所有这三种文件格式之间都没有问题。