【问题标题】:Is there a difference in VBA versions between office 2003 and 2007?office 2003 和 2007 之间的 VBA 版本有区别吗?
【发布时间】:2021-07-19 22:03:31
【问题描述】:

我是否可以不受惩罚地使用 access 2007 VBA 参考(具体而言,就基本语言和旧的 com 接口而言)为 access 2003 开发基于 VBA 的解决方案?

或者是否有一些新的/修改过的语法添加到我需要注意的语言中?

Office 2007 中的对象模型是否得到了显着增强?

还有其他注意事项吗?

【问题讨论】:

    标签: ms-access vba ms-office


    【解决方案1】:

    在最新版本的 Microsoft Office 之间,VBA 语言本身没有发生变化(将来也可能不会发生变化)。 Access2000以后的VBA版本是VBA6。

    不过,Office 应用程序的对象模型略有修改。 Microsoft 通常只通过额外的方法和属性来扩展 OM。就 Access 而言,我无法向您提供任何详细信息,但您可以在此处找到修改列表:

    一般来说,针对特定版本的 Office 开发的 VBA 解决方案将适用于较新的版本。魔鬼在于细节。由于错误修复和新功能,应用程序的行为可能与旧版本略有不同。找出一切是否仍然有效的唯一方法是进行详尽的测试。

    【讨论】:

      【解决方案2】:

      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 样式的许多功能区快捷方式。 我找不到任何方法来抑制这种行为。 应该用其他热键代替。

      【讨论】:

      • 嗯,你的回答很可爱,我看不出这个问题与 Excel 有什么关系。
      • 你说得对,我有点心不在焉。但是,Excel 2007 与 Excel 2003 相关的 VBA 发生了什么应该在其他 VBA 实现中重复。在 Word 2007 或 Outlook 2007 中,我没有发现任何问题(直到现在),但我的使用不那么强烈
      • 我不太确定 Word/Excel/Outlook 中的 VBA 限制是否也适用于 Access。
      【解决方案3】:

      如果您将 accdb/mdb 编译为 accde/mde,您需要确保将它们编译为与主应用程序相同的版本。我在使用 Access 2003 MDE 和 Access 2007 时遇到了一些麻烦(显然反之亦然)。

      【讨论】:

        猜你喜欢
        • 2011-01-24
        • 2012-05-21
        • 1970-01-01
        • 2010-11-22
        • 1970-01-01
        • 2011-09-06
        • 2010-10-20
        • 2011-03-22
        • 2012-02-16
        相关资源
        最近更新 更多