2

私が使用しているワークブックのセットアップ方法により、ワークブック内にさまざまな接続が作成されますが、有効な接続は 1 つだけです。有効な接続は更新日を持つ唯一の接続になるため、これを見つけるために Excel マクロを使用して null チェックを設定しようとしています。私がこれまでに持っているコードは次のとおりです。

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

null チェックで実行時エラー '1004' が発生しました。アプリケーション定義またはオブジェクト定義のエラー。これが欠落している参照と関係があるのだろうか?またはおそらく何か他のもの。

どんな助けでも大歓迎です!ありがとう!

4

2 に答える 2

2

これは、型にきれいな null 値がないことが原因だと思いますDate。代わりに、MS はアクセスしようとするとエラーをスローします。

これに対処する 1 つの方法は、値を変数に取得することですが、その取得をエラー ハンドラー ブロックでラップします。

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

ただし、null になるかどうかはわかりません: http://msdn.microsoft.com/en-us/library/office/ff837641(v=office.14).aspx

于 2013-03-27T17:56:52.577 に答える