![]() |
1
8
VBA语言没有更改,但Office 2007中有其他对象不在Office 2003中。当然,当您试图在2003环境中访问这些项时,这将导致运行时错误。是什么阻止您设置一个使用excel 2003开发的虚拟机? |
![]() |
2
5
最好的做法(mmost relresponsible)不是依赖于添加到excel 2007对象库中的对象和方法的不完整列表,而是始终在可能用于运行代码的最旧版本的excel中开发。 |
![]() |
3
4
我发现的一个不同之处是,子例程在菜单(在excel 2003中)中调用的签名必须与在功能区(在excel 2007中)中调用的签名不同。此外,excel 2003不识别iribboncontrol并抛出编译错误。 为了实现跨版本兼容,我使用了一个条件编译参数,然后在预处理器宏中检查它。 例如
这确实意味着您必须保存一个版本的外接程序,其中usingribbon标志设置为false(对于excel2003)和usingribbon标志设置为true(对于excel2007),但这比维护两个完全独立的代码基要容易得多。 |
![]() |
4
2
BillB2112是对的。excel 2007与excel 2003相比有许多不向后兼容的更改。虽然语言可能没有更改,但对象已经更新。有些已经添加了额外的属性,有些工作方式不同,excel中的一些函数已经更改。 你需要非常小心,你的代码在excel 2003工作。 我建议像billb2112所说的那样,让一个虚拟机不仅可以进行测试,还可以进行编码。我为在2003机器中只有2003的客户开发所有的excel。请注意,如果用户使用的是excel 2002或2000,那么返回时会有更多的差异,您只会在这些旧版本不支持的任何代码上得到运行时错误。 更新 不幸的是,杰夫斯的回答并不完全正确。是的,VBA语言没有更新,但2007年与2003年不一样。2003年与2002年不一样。 所发生的是额外的和额外的函数以及函数的参数被添加。例如,2003年excel的find函数中有比2002年更多的选项。因此,如果在2003年录制宏(找到这些问题的最佳方法),然后在2002年运行它,则会出现与新参数相关的运行时错误,这些新参数在2002 VBA编辑器中根本不起作用。对excel 2007中已更改的函数执行相同的过程,然后返回到2003进行测试,这将帮助您找到这些问题。一些例子包括条件格式、颜色(主题)和许多新的电子表格功能。 jon peltier从这方面得到了最好的建议-在客户机/用户可能使用的最旧版本中进行开发。 虚拟PC 2007可以免费下载和安装。您只需要一个xp/vista和office的授权副本就可以在其中运行。 |
![]() |
5
-3
我在2003年以前开发了很多宏,什么POTA,像find,dir之类的东西都不可用或者有什么变化。因此有些错误是可以预料的,我曾经从65000行数到第一个非空行数到要处理的行….现在更多的行意味着更多的工作要做 |