由于我正在使用的工作簿的设置方式,在其中创建了许多不同的连接,但只有一个连接有效。有效的连接将是唯一具有刷新日期的连接,因此我尝试使用Excel宏来设置null检查来查找此日期。到目前为止,我拥有的代码是:
For Each c2 In ActiveWorkbook.Connections
If Not IsNull(c2.ODBCConnection.RefreshDate) Then
Blah Blah
End If在null检查时,我遇到运行时错误'1004';应用程序定义的错误或对象定义的错误。我想知道这是不是和一个缺失的引用有关?也可能是别的什么。
任何帮助都将不胜感激!谢谢!
发布于 2013-03-28 02:40:38
我认为这是由于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
NextOn Error Resume Next表示下面的代码不应该在出现错误时中断;On Error Goto 0表示正常的(系统)错误处理应该恢复。
发布于 2013-03-28 01:56:53
并不是所有的连接都是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
https://stackoverflow.com/questions/15665139
复制相似问题