【发布时间】:2021-07-19 22:03:31
【问题描述】:
我是否可以不受惩罚地使用 access 2007 VBA 参考(具体而言,就基本语言和旧的 com 接口而言)为 access 2003 开发基于 VBA 的解决方案?
或者是否有一些新的/修改过的语法添加到我需要注意的语言中?
Office 2007 中的对象模型是否得到了显着增强?
还有其他注意事项吗?
【问题讨论】:
我是否可以不受惩罚地使用 access 2007 VBA 参考(具体而言,就基本语言和旧的 com 接口而言)为 access 2003 开发基于 VBA 的解决方案?
或者是否有一些新的/修改过的语法添加到我需要注意的语言中?
Office 2007 中的对象模型是否得到了显着增强?
还有其他注意事项吗?
【问题讨论】:
在最新版本的 Microsoft Office 之间,VBA 语言本身没有发生变化(将来也可能不会发生变化)。 Access2000以后的VBA版本是VBA6。
不过,Office 应用程序的对象模型略有修改。 Microsoft 通常只通过额外的方法和属性来扩展 OM。就 Access 而言,我无法向您提供任何详细信息,但您可以在此处找到修改列表:
一般来说,针对特定版本的 Office 开发的 VBA 解决方案将适用于较新的版本。魔鬼在于细节。由于错误修复和新功能,应用程序的行为可能与旧版本略有不同。找出一切是否仍然有效的唯一方法是进行详尽的测试。
【讨论】:
Excel 2007 中有一些新的属性、方法和对象。
但是,Excel 2003 中的大多数程序在 Excel 2007 中运行良好
VBA Excel 2003 中的一些内容在 Excel 2007 中不起作用。
我发现了 4 个问题。
“Chart.Add”在 Excel 2007 中选择超过 1 个单元格时会出现自动化错误
错误不会自行重置,有必要在命令之前使用 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
....
Range(...).Paste(xlFormulas) 现在在存在可能的名称冲突时停止, 有必要使用
Application.displayalerts = False
Range(....).Paste(xlFormulas)
Application.displayalerts = True
在 Excel 2007 中保留了几个热键,例如 Alt+N。 Application.Onkey("%n","rotina") 在这种情况下不起作用。 现在它是 ALT+Letra 样式的许多功能区快捷方式。 我找不到任何方法来抑制这种行为。 应该用其他热键代替。
【讨论】:
如果您将 accdb/mdb 编译为 accde/mde,您需要确保将它们编译为与主应用程序相同的版本。我在使用 Access 2003 MDE 和 Access 2007 时遇到了一些麻烦(显然反之亦然)。
【讨论】: