2

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

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

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

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

4

2 回答 2

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应该恢复正常(系统)错误处理。

于 2013-03-27T18:40:37.597 回答
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

于 2013-03-27T17:56:52.577 回答