【发布时间】: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
-
试一试 - 我检查了
OLEDBConnection和ODBCConnection类,它们都有.RefreshDate作为属性! -
我做了,但出现运行时错误 438
-
好的。刚刚尝试过 ActiveWorkbook.Connections(connectionName).OLEDBConnection.RefreshDate,但该属性在调试窗口中显示错误(或者可能只是为空,不是 100% 确定)。
标签: excel vba sharepoint connection