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

Excel 为XLS、XLSX和XLSM编写的宏之间是否存在兼容性问题?,excel,vba,Excel,Vba,为XLS、XLSX和XLSM编写的宏之间是否存在兼容性问题?同一个宏是否适用于所有工作簿?Excel使用Visual Basic for Applications(VBA)处理宏。不同文件类型之间的主要区别在于数据的存储方式(在XLSM和XLS能否在工作簿中保存宏的问题中,编辑和重要XLSX无法保存宏)。处理宏的是excel和VBA,因此在这三种文件格式之间都没有问题。这些格式之间存在显著差异: .XLS用于Excel 2003及更高版本,因此VBA代码需要向后兼容用于早期版本的Excel(有

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

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

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


  • .XLS
    用于Excel 2003及更高版本,因此VBA代码需要向后兼容用于早期版本的Excel(有关Excel 2003中不可用的方法列表,请参阅JMax的回复)

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

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

    例如,我会完全避免使用FileSearch(在Excel2007中不推荐使用),而是使用Dir

    您的代码还应该测试本地Excel版本,并根据版本使用条件编译

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


    还请记住,XLSX文件无法保存宏。因此,如果文件包含宏代码,则永远不要以这种格式保存文件。

    不,这在所有三种格式之间都不起作用,因为
    XLSX
    无法存储VBA@JMax您是否建议如果我在XLSX工作簿中编写宏,它将无法运行?仅仅因为它无法存储,不是吗我不是说它不起作用。嗯……它会起作用……除非你用XLSX格式保存工作簿。你刚才写的是“XLS无法保存宏”吗?Office 2003 Excel工作簿什么时候开始无法保存和存储宏代码了?还是我误读了。没有Excel格式的“Xlxs”。我想你是说“XLSX”.JMax是对的--以XLSX格式保存Excel 2007+工作簿将删除工作簿中的所有宏。这与您的问题毫无关系。谢谢您的回答。问题不在于各种文件扩展名之间的差异!!!我想他是在问更多关于Office 2007和2003 VBA方法之间向后兼容性的问题。例如MPE Office 2007中提供的新方法和事件将在2003年无法编译。@JP:该死,谢谢。OP的问题真的非常不清楚……但是,我编辑了我的答案以满足这一新要求。我认为你把重点放在文件名上而不是提到Office版本之间的向后兼容性,这让人感到困惑。如果你用词回答您的问题,您可能会得到更合适的答案。+1用于指出
    FileSearch
    函数案例。MS说它有缺陷,所以他们在Excel 2007+中删除了它,这可能很棘手!