为XLS,XLSX和XLSM编写的宏之间是否存在兼容性问题?相同的宏是否适用于所有工作簿?
答案 0 :(得分:12)
这些格式之间存在显着差异:
.XLS
旨在用于Excel 2003及更高版本,因此对于早期版本的Excel(< 2007).XLSX
是无法存储VBA代码的Excel 2007格式。.XLSM
或.XLSB
是Excel 2007格式,允许您使用工作簿保存VBA代码。正如Sydenam所说,这两者之间的差异就是存储工作簿的方式。简而言之:.XLSB
是二进制格式(相当于2007 +版本的.XLS
),而.XLSM
是OOXML格式。
有关详细信息,请参阅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来处理宏,因此它们在所有这三种文件格式之间都没有问题。