【问题标题】:VBA behaves differently after close and re-open关闭和重新打开后 VBA 的行为有所不同
【发布时间】:2016-08-17 03:55:23
【问题描述】:

我在运行 Windows Vista 的 PC 上使用 Access 2007。

在许多模块中带有 VBA 代码的 Access 数据库按预期工作。但是,在我退出数据库并重新进入后,一个模块的行为有所不同。重新输入后,我可以选择查看代码并保存,而无需更改任何代码,程序将恢复到我预期的工作方式。有什么想法吗?

详情: 具有不一致的 Access 模块打开 Word 2007 并使用书签从模板 (.dotx) 文件创建一个新文档,以将 Access 数据合并到文档中。这可以正常工作,并且每次都可以正常工作。创建文档后,vba 代码将 Word 窗口调用到前面。除非我选择查看代码并保存,否则不会发生这种情况。我不必修改任何代码,只需选择保存。然后它按预期工作,直到我关闭数据库。当我下次打开数据库并选择创建 Word 文档的按钮时,该文档不会被置于最前面,而是留在 Access 窗口的后面。如果我选择查看代码并保存,则在该会话期间创建的后续文档会根据需要显示在前面。这是一致且可重复的。

【问题讨论】:

    标签: ms-access vba ms-office ms-access-2007


    【解决方案1】:

    我不确定为什么会发生这种情况,但我认为可能可行的快速解决方法是在加载数据库时以编程方式保存模块。

    docmd.save acmodule, "module name"
    

    希望这行得通!

    【讨论】:

    • 利亚姆:谢谢。您的代码不起作用,但它给了我如何解决问题的线索。 VBA 代码位于类模块中,并一直告诉我该对象未打开。经过反复试验,我发现这解决了问题: Private Sub Form_Load() DoCmd.OpenModule "Form_frmOrderEntry" DoCmd.Save DoCmd.Close acModule, "Form_frmOrderEntry" End Sub 运行此代码时,代码编辑器窗口会闪烁。你知道有什么方法可以让这个在后台运行吗?
    • 有一个ScreenUpdate,您可以在代码的开头设置为false,然后在结尾设置true...您可能需要通过谷歌搜索确切的语法,但它非常简单.我不确定为什么 vba 编辑器变得可见,我以前从未见过。但是ScreenUpdate 应该修复它
    • 谢谢,我会试试的。我还发现在代码之前设置 Application.VBA.MainWindow.Height = 0 和在代码之后设置 Application.VBA.MainWindow.Height = 840 会导致“flash”几乎不明显。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-27
    • 2019-07-03
    • 1970-01-01
    相关资源
    最近更新 更多