2008-10-13 125 views
7

我在哪里开发利用已更新为Excel 2007中,但大多数用户都没有。我正在为需要包含一些vba代码的用户构建一个电子表格模板(* .xlt),我想知道在2007年而不是2003年可能会遇到什么问题?我无法访问使用Excel 2003进行测试的计算机,而且我担心这个特定项目正在发生灾难。编写VBA在Excel 2007在Excel 2003

+0

我已经说服了我的老板让我在ASP.Net页面而不是电子表格中创建它(它将以这种方式与我们的其他Intranet应用程序进行良好的配合),所以从我的角度来看,这个问题现在没有意义。但是,这里的信息对其他人可能仍然有用,所以我将它保持活跃。 – 2008-11-04 04:55:03

+0

真的这个问题是相当有趣的,但不幸的是由于无尽的用例情况,我们可能永远不会完成它。真的没有理由不将虚拟机与Office 2003一起用于开发和测试。 – 2010-10-12 21:29:17

回答

8

VBA语言并没有改变,但也有在Office 2007中没有的Office 2003中。当然更多的对象,当您尝试在2003年的环境中访问这些项目,这将导致运行时错误。什么阻止你设置虚拟机使用Excel 2003进行开发?

+1

我无法在此处执行任何虚拟机工作。如果你可以指向我的附加对象列表,所以我可以知道避免它们,那很好。 – 2008-10-13 17:27:18

2

billb2112是正确的。 Excel 2007对excel 2003的许多更改都不是向后兼容的。虽然语言可能没有改变,但对象已经更新。一些已经添加了额外的属性,一些工作方式不同,Excel中的一些功能已经改变。

你需要非常小心,你的代码在Excel 2003中工作。 我会建议,因为billb2112说,你得到一个虚拟机不仅测试,而且代码英寸我做我所有的Excel开发为在2003年的机器上只有2003的客户。请注意,如果用户使用Excel 2002或2000,则返回时会有更多差异,并且只会在这些旧版本不支持的任何代码上发生运行时错误。

更新 不幸的是杰夫斯的答案是不太正确的。而对VBA语言尚未更新,它不是在2007年与2003年一样,2003年的不一样,2002年等 发生了什么事是额外的功能和附加功能和参数已被添加。例如,2003年在Excel中的FIND函数中有更多的选项比2002年更多。因此,如果在2003年录制一个宏(找到这些问题的最好方法),然后在2002年运行它,那么将会运行与新的参数在2002年VBA编辑器中无法使用。对于在Excel 2007中已更改的功能执行相同的过程,然后再回到2003进行测试,将帮助您找到这些问题。一些例子包括条件格式化,颜色(主题)和许多新的电子表格功能。 jon peltier从这方面得到了最好的建议 - 在客户端/用户将使用的最早版本中开发。 Virtual PC 2007可以免费下载和安装。你只需要一个XP/Vista和办公室的许可副本来安装运行它。

+0

不幸的是,虚拟机不是一个选项。我真的需要一份2003年没有的项目清单。 – 2008-10-15 13:12:39

5

而不是依赖于已添加到Excel 2007的对象库中的对象和方法的可能不完整的列表,最好的(mmost可重写)练习总是在可能用于运行的最早版本的Excel中开发码。

+0

不幸的是,我没有这个选项。 – 2008-11-04 04:53:25

-3

我曾经开发出了很多宏2003下,有什么POTA ,,之类的东西找到,迪尔和其他一些不可用什么变化。因此,有些错误回报可以预期,我使用了65000行数到的第一个非空行数行上下工夫....现在更多的行意味着更多的工作要做

4

一个不同之处,我发现是,子例程必须具有与从功能区调用(在Excel 2007中)不同的特征才能从菜单中调用(在Excel 2003中)。还有,Excel 2003无法识别IRibbonControl并引发编译错误。

要朝着跨版本兼容的工作,我使用条件编译参数,然后检查,在预处理器宏。

例如

#If USINGRIBBON Then 
    Public Sub CallFromRibbon(control As IRibbonControl) 
#Else 
    Public Sub CallFromRibbon() 
#End If 
    ' Code here 
    End Sub 

这并不意味着你必须保存您的外接的一个版本设置为false(对于Excel2003中)的USINGRIBBON标志,另一个与USINGRIBBON标志设置为true(对于Excel2007中),但是这是比维护两个完全独立的代码库要容易得多。