由于我正在设置工作簿的方式,因此在其中创建了许多不同的连接,但只有一个连接有效。有效连接将是唯一具有刷新日期的连接,因此我尝试使用Excel宏设置空检查以查找此内容。我到目前为止的代码是:
For Each c2 In ActiveWorkbook.Connections
If Not IsNull(c2.ODBCConnection.RefreshDate) Then
Blah Blah
End If
在null检查时遇到运行时错误'1004';应用程序定义或对象定义的错误。我想知道这是否与缺少参考有关?或者可能是别的东西。
任何帮助将不胜感激! 谢谢!
答案 0 :(得分:2)
我认为这是由Date
类型没有干净的空值引起的。相反,当您尝试访问它时,MS会引发错误。
解决此问题的一种方法是将值检索到变量中,但将该检索包装在错误处理程序块中:
Dim d As Date
For Each c2 In ActiveWorkbook.Connections
On Error Resume Next
d = c2.OLEDBConnection.RefreshDate
If Err = 1004 Then
MsgBox "No date"
ElseIf Err <> 0 Then
MsgBox "Unknown error (" & Err.Number & "): " & Err.Description
Else
MsgBox CStr(d)
End If
On Error GoTo 0
Next
On Error Resume Next
表示以下代码不应出错; On Error Goto 0
表示应恢复正常(系统)错误处理。
答案 1 :(得分:1)
并非所有连接都是ODBC,如何:
For Each c2 In ActiveWorkbook.Connections
If c2.Type = xlConnectionTypeODBC Then
If Not IsNull(c2.ODBCConnection.RefreshDate) Then
''Blah Blah
End If
End If
Next
但是,我不确定它是否会为空:http://msdn.microsoft.com/en-us/library/office/ff837641(v=office.14).aspx