Excel VBA:捕获不会刷新的外部数据连接?

时间:2013-11-21 12:07:06

标签: excel vba sharepoint connection

大家好,德国人的问候!

经过一段时间的搜索,我的智慧结束了,我希望有人可以帮助我。

我尽可能简单明了地描述我的问题:

我正在构建一个MS Excel 2010工作簿,其中包含多个(90+)外部连接到SharePoint 2013列表&库。

这些连接是由SharePoint集成的“导出到Excel”功能(在List / Library-Ribbon中)创建的,然后连接文件将导出到另一个SP场。 (第一个“源”-SP-Farm来自客户,第二个是我们自己的内部网)

我必须每天通过自动宏刷新这些连接一次。

计时器作业将在晚上打开工作簿并执行“RefreshAllConnections”-macro, 这不仅仅是刷新(例如写下刷新日期和时间)。 因此,当发生这种情况时,没有用户在场。

这就是我的问题所在:

有时,其中一些连接无法刷新。 Excel显示警告说(翻译自德语):

“以下数据范围无法更新:owssvr(...) 你想继续更新吗? (确定)/(取消)

到目前为止我发现了什么:

1)问题始终是图书馆

2)相当随机的图书馆不会更新,何时

3)问题在一段时间后自行修复(这就是为什么我猜这与其他人使用/修改的库有关)

4)当库拒绝更新时,再次使用“导出到Excel”功能会在创建新工作表并且数据应填入

后再次出现错误

现在有几点:

1)警报始终使用我已更改的“旧/原始”连接名称。

2)当我按下OK时,宏只会在下一行继续,不会抛出任何错误

3)如果我按下取消,则会出现错误1004(我至少可以捕获,这样就可以了)。

以下是问题:

由于这是在晚上自动发生的,因此没有用户坐在附近来回答这些警报。所以:

1)宏必须通过“取消”自动回复这些警报,如果它们弹出(我不知道该怎么做!)

2)我通过“Application.displayAlerts = false

禁用它们

但是:这将使用默认答案自动回答它们,即“OK”。 然而,这并没有引发我可以捕获的错误,因此我的宏现在不会知道更新是否有效。

那是关于它的。对不起,很长的帖子和感谢阅读。

希望你们中有人有个主意。


编辑:

是否可能是由SharePoint生成的连接自动成为问题?

(怎么样)我可以自己建造它们吗?

1 个答案:

答案 0 :(得分:3)

好。我自己解决了。

答案很简单:

我现在通过“ActiveSheet.ListObjects(1).QueryTable.Refresh”

刷新相应的QueryTable,而不是刷新Connection。

如果Connection没有响应,则会抛出一个错误,我现在可以正常捕获。

呃,终于来了!