【问题标题】:Excel VBA: Catching an external data connection that won't refresh?Excel VBA:捕获不会刷新的外部数据连接?
【发布时间】:2013-12-05 21:36:42
【问题描述】:

大家好,来自德国的问候!

经过一段时间的搜索,我束手无策,希望有人能帮助我。

我尝试尽可能清晰简洁地描述我的问题:

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

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

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

定时作业将在晚上打开工作簿并执行“RefreshAllConnections”-宏, 这不仅仅是刷新(例如写入刷新日期和时间)。 所以发生这种情况时没有用户在场。

这就是我的问题所在:

有时无法刷新其中一些连接。 Excel 会显示一条警告信息(从德语翻译):

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

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

1) 问题总是图书馆

2) 哪个库不会更新以及何时更新是相当随机的

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

4)当库拒绝更新时,再次使用“导出到Excel”功能会在创建新工作表并填写数据后提示错误

现在是赔率:

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

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

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

问题如下:

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

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

2) 我通过“Application.displayAlerts = false

禁用它们

但是:这将自动使用默认答案“OK”回答他们。 然而,这并没有引发我可以捕捉到的错误,所以我的宏现在不会更新是否真的有效。

嗯,就是这样。对不起,很长的帖子,感谢您的阅读。

希望你们中的某个人有一个想法。


编辑:

可能是 SharePoint 自动生成的连接有问题吗?

(如何)我可以自己构建它们吗?

【问题讨论】:

  • 快速思考:设置.DisplayAlerts为False——然后对比刷新前后的.RefreshDate判断是否成功...
  • 那很好,但是,没有这样的属性,并且 excel 连接表/列表中的“上次更新”列始终为空。快速添加仅供参考:SP 连接都是 OLEDB
  • 试一试 - 我检查了 OLEDBConnectionODBCConnection 类,它们都有 .RefreshDate 作为属性!
  • 我做了,但出现运行时错误 438
  • 好的。刚刚尝试过 ActiveWorkbook.Connections(connectionName).OLEDBConnection.RefreshDate,但该属性在调试窗口中显示错误(或者可能只是为空,不是 100% 确定)。

标签: excel vba sharepoint connection


【解决方案1】:

嗯。我自己解决了。

答案非常简单:

我现在不是刷新Connection,而是通过“ActiveSheet.ListObjects(1).QueryTable.Refresh”刷新相应的QueryTable

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

啊,终于!

【讨论】:

  • 我意识到我在这个问题上有点晚了,但你真的应该将此标记为答案,这样它就不会继续出现未回答的情况。
猜你喜欢
  • 2015-06-19
  • 2016-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
相关资源
最近更新 更多