我是否可以使用访问2007 VBA引用而不受惩罚(具体而言,就基本语言和旧的com接口而言)为Access 2003开发基于VBA的解决方案?
或者是否有一些新的/修改过的语法添加到我需要注意的语言中?
在2007年的办公室中,对象模型是否得到了大幅提升?
还有其他警告吗?
谢谢。
答案 0 :(得分:8)
在最新版本的Microsoft Office之间,VBA语言本身并未发生变化(未来可能不会发生变化)。从Access2000开始的VBA版本是VBA6。
然而,Office应用程序的对象模型稍有修改。 Microsoft通常只通过其他方法和属性扩展OM。就Access而言,我无法向您提供任何详细信息,但您可以在此处找到修改列表:
通常,针对特定版本的Office开发的VBA解决方案将使用较新版本。魔鬼虽然在于细节。由于错误修复和新功能,应用程序可能表现出与旧版本不同的轻微。找出一切是否仍然有效的唯一方法是详尽的测试。
答案 1 :(得分:2)
Excel 2007中有一些新的属性,方法和对象。
但是,Excel 2003中的大多数程序在Excel 2007中运行良好
VBA Excel 2003中的一些东西在Excel 2007中不起作用。
我发现了4个问题。
“Chart.Add”在选择了多个单元格时在Excel 2007中出现自动化错误
错误不会自行重置,必须在命令之前使用Err.clear 发布错误。
On Error Resume Next
Intruction_That_Could_be_buggy_1
if Err.Number <>0 Then
Err.Clear ' <<<<==== This command is necessary
Intruction_That_Could_be_buggy_2
if Err.Number <>0 Then
....
范围(...)。当存在可能的名称冲突时,粘贴(xlFormulas)现在停止 有必要使用
Application.displayalerts = False
Range(....).Paste(xlFormulas)
Application.displayalerts = True
Excel 2007中保留了Alt + N等几个热键。 Application.Onkey(“%n”,“rotina”)在这种情况下不起作用。 现在它是ALT + Letra风格的许多功能区快捷方式。 我找不到任何方法来抑制这种行为。 它应该用于其他热键。
答案 2 :(得分:0)
如果要将accdb / mdb编译为accde / mde,则需要确保将它们编译为与主应用程序相同的版本。我在Access 2007中使用Access 2003 MDE时遇到了一些麻烦(显然反之亦然)。