VBA使用ODBC连接。错误1004中的日期结果

时间:2013-03-27 17:14:04

标签: vba excel-vba excel

由于我正在设置工作簿的方式,因此在其中创建了许多不同的连接,但只有一个连接有效。有效连接将是唯一具有刷新日期的连接,因此我尝试使用Excel宏设置空检查以查找此内容。我到目前为止的代码是:

For Each c2 In ActiveWorkbook.Connections
If Not IsNull(c2.ODBCConnection.RefreshDate) Then  
Blah Blah  
End If

在null检查时遇到运行时错误'1004';应用程序定义或对象定义的错误。我想知道这是否与缺少参考有关?或者可能是别的东西。

任何帮助将不胜感激! 谢谢!

2 个答案:

答案 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