我们有一个内部系统,可以生成excel报告,通过使用外部连接的表和数据透视表直接从数据库获取数据。
但是,有时需要将这些报告发送给外部客户端,显然连接会失败,并且会收到错误报告和空报告。
在工作簿VBA中,我们有以下函数来检查连接是否有效:
Public Function ConnectADO() As Boolean
Dim retry As Boolean
Dim provider As String
Dim ConnectionString As String
On Error Resume Next
retry = False
ConnectADO = False
ConnectionString = "MyConnectionString"
If mycon Is Nothing Then
Set mycon = New ADODB.Connection
mycon.CommandTimeout = 30
mycon.ConnectionTimeout = 1 'so external clients aren't waiting ages
mycon.CursorLocation = adUseClient
mycon.Open ConnectionString
End If
If (mycon.State <> 1) Then
ConnectADO = False
Set mycon = Nothing
Else
ConnectADO = True
End If
If Err Then
ConnectADO = False
Set mycon = Nothing
End If
End Function
在打开电子表格时调用该函数,如果连接失败,则不会运行或刷新任何导入代码。但这感觉就像一个笨拙的方法 - 一个缓慢的网络日,一个内部的人会被ConnectionTimeout = 1
的初学者所咬。如果有人忘记专门为客户保存表格的填充副本,他们将获得一个空的电子表格。
有更复杂的方法吗?
答案 0 :(得分:0)
我建议您让代码创建一个新工作簿来保存要导出的数据。将该新文件发送给您的客户。这完成了几件事: