Excel VBA:捕获赢得';不刷新?

Excel VBA:捕获赢得';不刷新?,excel,vba,sharepoint,connection,Excel,Vba,Sharepoint,Connection,大家好,来自德国的问候 经过一段时间的寻找,我已经不知所措,希望有人能帮助我 我试图尽可能清楚、简要地描述我的问题: 我正在构建一个MS Excel 2010工作簿,其中包括到SharePoint 2013列表和库的多个(90+)外部连接 这些连接由SharePoint的集成“导出到Excel”功能(在列表/库功能区中)创建,然后将连接文件导出到另一个SP场。 (第一个“来源”-SP场来自客户,第二个是我们自己的内部网) 我必须通过自动宏每天刷新一次这些连接 计时器作业将在夜间打开工作簿并执行“

大家好,来自德国的问候

经过一段时间的寻找,我已经不知所措,希望有人能帮助我

我试图尽可能清楚、简要地描述我的问题:

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

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

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

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

这就是我的问题所在:

有时这些连接中的一些无法刷新。 Excel显示一条警告语句(翻译自德语):

“无法更新以下数据范围:owssvr(…) 是否要继续更新? (确定)/(取消)

到目前为止,我发现:

1) 问题总是出在图书馆

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

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

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

现在机会来了:

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

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

3) 如果我按cancel,就会出现错误1004(我至少可以捕捉到,这样就可以了)

以下是问题:

由于这是在夜间自动发生的,因此附近没有用户接听这些警报。因此:

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

2) 我通过“Application.displayAlerts=false”禁用它们

但是:这将自动用默认答案回答他们,即“OK”。 然而,这并不是抛出一个我可以捕捉到的错误,所以无论更新是否有效,我的宏现在都不会抛出

就这样。很抱歉发了这么长的帖子,谢谢阅读

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


编辑:

是否SharePoint自动生成的连接是问题所在


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

嗯。我自己解决了

答案非常简单:

我现在不是刷新连接,而是通过“ActiveSheet.ListObjects(1.QueryTable.refresh”刷新相应的QueryTable

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


啊,终于

快速思考:将
.DisplayAlerts
设置为False-然后比较刷新前后的
.RefreshDate
,以确定刷新是否成功…这很好,但是,没有这样的属性,excel connections表/列表中的“Last Update”列始终为空。快速添加供参考:SP连接都是OLEDB请试用-我检查了
OLEDBConnection
ODBConnection
类,它们都有
.RefreshDate
属性!我做了,我得到了一个运行时错误438OK。刚刚尝试了ActiveWorkbook.Connections(connectionName).OLEDBConnection.RefreshDate,但该属性在调试窗口中显示错误(或者可能只是为null,不是100%确定)。我意识到我在这个问题上有点晚了,但您确实应该将其标记为答案,这样它就不会继续显示为未回答。