次の方法で共有


Error.Source プロパティ (DAO)

適用先: Access 2013、Office 2013

エラーの発生源のオブジェクト名またはアプリケーション名を取得します。

構文

。ソース

: Error オブジェクトを表す変数。

注釈

Source プロパティの値は、通常、オブジェクトのクラス名またはプログラム識別子になります。 Source プロパティを使用すると、別のアプリケーションのオブジェクトで発生したエラーをコードで処理できない場合、ユーザーにその情報を提供することができます。

たとえば、Microsoft Excel にアクセスし、"0 除算" エラーが発生した場合、Microsoft Excel はそのエラーの Error.Number を Microsoft Excel コードに設定し、 Source プロパティを Excel.Application に設定します。 エラーが Microsoft Office Excel によって呼び出された別のオブジェクトで発生した場合は、Microsoft Office Excel がそのエラーを解釈し、 Error.Number を Microsoft Office Excel コードに設定することに注意してください。 ただし、他の Error オブジェクトのプロパティ ( Source プロパティを含む) は、エラーの発生源となったオブジェクトが設定した値を保持します。 Source プロパティは、常にエラーの発生源となったオブジェクトの名前を格納します。

すべてのエラー情報に基づいて、エラーを適切に処理するためのコードを書くことができます。 エラー処理ルーチンが失敗した場合、 Error オブジェクトの情報を使用してユーザーにエラーに関する説明を提供でき、 Source プロパティや他の Error プロパティを使用すると、ユーザーにエラーの発生源となったオブジェクトの情報、エラーの説明などを提供することができます。

注:

[!メモ] 他のオブジェクトへのアクセス時に発生したエラーを処理する場合、 On Error GoTo より On Error Resume Next ステートメントの使用をお勧めします。 オブジェクトとの各相互作用の後に Error オブジェクトのプロパティを確認すると、エラーの発生時にコードがアクセスしていたオブジェクトを明確にすることができます。 このため、Error.Number にエラー コードを配置したオブジェクトや、エラーの発生源となったオブジェクト (Error.Source) を確認できます。

次の使用例は、エラーを強制的に発生させ、トラップし、生成された Error オブジェクトの DescriptionNumberSourceHelpContext、および HelpFile の各プロパティを表示します。

    Sub DescriptionX() 
     
     Dim dbsTest As Database 
     
     On Error GoTo ErrorHandler 
     
     ' Intentionally trigger an error. 
     Set dbsTest = OpenDatabase("NoDatabase") 
     
     Exit Sub 
     
    ErrorHandler: 
     Dim strError As String 
     Dim errLoop As Error 
     
     ' Enumerate Errors collection and display properties of 
     ' each Error object. 
     For Each errLoop In Errors 
     With errLoop 
     strError = _ 
     "Error #" & .Number & vbCr 
     strError = strError & _ 
     " " & .Description & vbCr 
     strError = strError & _ 
     " (Source: " & .Source & ")" & vbCr 
     strError = strError & _ 
     "Press F1 to see topic " & .HelpContext & vbCr 
     strError = strError & _ 
     " in the file " & .HelpFile & "." 
     End With 
     MsgBox strError 
     Next 
     
     Resume Next 
     
    End Sub