只有关闭并重新打开工作簿,Excel表连接才会刷新

只有关闭并重新打开工作簿,Excel表连接才会刷新,excel,vba,Excel,Vba,我正在运行Excel 2010,我有一个连接到MS Access 2010查询的表。我有一些VBA来更新Access查询的SQL。然后,当我刷新Excel表时,返回指定日期范围的数据 这通常效果很好。但是,每月流程的一部分是每月以新名称将工作簿另存到新文件夹中。此时,我无法再刷新Excel表。我收到以下错误: 运行时错误“1004”: 查询未运行,或无法打开数据库表。 检查数据库服务器或与数据库管理员联系。请确保外部数据库可用且未被移动或重新组织,然后重试该操作 如果我关闭所有Excel工作簿并

我正在运行Excel 2010,我有一个连接到MS Access 2010查询的表。我有一些VBA来更新Access查询的SQL。然后,当我刷新Excel表时,返回指定日期范围的数据

这通常效果很好。但是,每月流程的一部分是每月以新名称将工作簿另存到新文件夹中。此时,我无法再刷新Excel表。我收到以下错误:

运行时错误“1004”:

查询未运行,或无法打开数据库表。

检查数据库服务器或与数据库管理员联系。请确保外部数据库可用且未被移动或重新组织,然后重试该操作

如果我关闭所有Excel工作簿并重新进入相关工作簿,刷新效果会很好

为了避免关闭和重新打开,我想确定并解决错误的真正原因

以下是我在这个网站上读到并排除的一些修复方法

背景刷新
它是并且一直被设置为false

数据库权限
我确信这不是问题所在,因为关闭和重新打开工作簿不会改变凭据,但刷新Excel表的能力确实会改变

如果有人对这里可能出现的问题有任何想法,我将非常感谢您的帮助。一个包含VBA的解决方案也很好

麻烦代码:

Sub RunQueries()

ActiveWorkbook.RefreshAll

End Sub

我要指出,我不认为这是一个VBA问题。即使我尝试在Excel中手动刷新表格,也会收到错误。从MS Access中运行查询工作正常。

您是否尝试过通过Microsoft query连接到Access数据库?这将允许您直接在Excel中使用参数,而不必通过VBA更改任何内容。我从未尝试过这样做。我会调查这件事。您认为这会解决我的问题吗?还是您建议的一般流程变更?主要是一般流程变更。不过,它确实使用了一种不同的连接方法,因此它也可能解决您的问题。我认为连接本身可能不是问题,因为它有时有效,而其他时候不起作用。但我可能错了,我无法证明这一点,但有可能该文件使用“相对”文件路径访问数据库。当你将它保存到另一个位置时,会把它搞砸。再次关闭并打开Excel将重置工作簿的文件路径,使其能够再次运行。对我来说这听起来很合理,但就像我之前说的,我没有办法证明这一点。