使用 ODBCConnection.RefreshDate 的 VBA 结果出现错误 1004

标签 vba excel

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

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

在空检查时,我遇到运行时错误“1004”;应用程序定义或对象定义的错误。我想知道这是否与缺少引用文献有关?或者可能是其他东西。

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

最佳答案

我认为这是由于 Date 类型没有干净的 null 值引起的。相反,当您尝试访问它时,MS 会抛出错误。

处理此问题的一种方法是将值检索到变量中,但将该检索包装在错误处理程序 block 中:

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

关于使用 ODBCConnection.RefreshDate 的 VBA 结果出现错误 1004,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15665139/

相关文章:

vba - 将 .pdf 文件上传到 Sharepoint 文档库

vba - 四舍五入到最接近的数字倍数

python - 将多个excel文件导入python pandas并将它们连接到一个数据帧中

vba - 表会干扰 VBA 范围变量,具体取决于范围

regex - 从匹配的正则表达式中提取 Excel 字符串 (VBA)

excel - 插入行时防止公式引用更新

r - 如何将一组列复制到新行中?

vba - 带有 Excel VBA 的 Outlook 2010 GAL

excel - 使用 VBA for Excel 的 HTTPS POST 请求

excel - 为什么我的索引匹配函数返回 #N/A 错误?