Function Reference

_WordErrorHandlerRegister

ユーザーCOMエラーハンドラを登録し、有効にします。

#include <Word.au3>
_WordErrorHandlerRegister ( [$s_functionName = "__WordInternalErrorHandler"] )

 

パラメータ

$s_functionName [オプション] ユーザー定義のCOMエラーハンドラの名前のはいった文字列変数。デフォルトではこのUDFの内部COMエラーハンドラ。

 

返し値

成功: 1を返します
失敗: 0を返し@ERRORを設定します
@Error: $_WordStatus_Success = 正常終了
$_WordStatus_GeneralError = 一般的なエラー
@Extended: 無効なパラメータの数を格納

 

注意

重要: 独自のエラーハンドラを使用する場合、使用するエラーオブジェクト変数の名前は$oWordErrorHandlerでなければなりません (例を参照)。

AutoItはCOMエラーを検知して、それをObjEvent関数を使用している自作のエラーハンドラに渡すことができます。ただし、ここにUDF作成者にとって問題になることがあります。一度に1つのCOMエラーハンドラしか使用できないのです。UDFがCOMエラーハンドラを使用するためにはまずユーザーのエラーハンドラの登録を解除し、自身をインストールし、その後ユーザーのハンドラを元に戻さなければなりません。不運なことにデフォルト設定ではUDFはユーザーのエラーハンドラのハンドルにアクセスする方法がありません。

この関数を使用することで必要なときにWord.au3がうまく解除、復元できるようにあなたのCOMエラーハンドラを登録できます。独自の自作エラーハンドラを使用することも、Word.au3用に開発されたものを使用する(デフォルト)こともできます。またデフォルトの Word.au3用エラーハンドラを使用すると、コンソールに書かれる便利な対話情報と検知したエラー情報を格納したグローバル変数を得られます。

このWord.au3関数を使用しないで独自のCOMエラーハンドラを作成した場合、いくつかのCOMエラーは検知することができず、結果として突然のスクリプト終了が起きる可能性があります。

 

関連

_WordErrorHandlerDeRegister

 


; *******************************************************
; 例 1 - カスタムしたエラーハンドラとデフォルトのWord.au3エラーハンドラを登録。その後、登録解除
; *******************************************************
;
#include <Word.au3>
; カスタムエラーハンドラを登録
_WordErrorHandlerRegister ("MyErrFunc")
; なんらかの処理
; カスタムエラーハンドラを登録解除
_WordErrorHandlerDeregister ()
; なんらかの処理
; デフォルトのWord.au3COMエラーハンドラを登録
_WordErrorHandlerRegister ()
; なんらかの処理

Exit

Func MyErrFunc()
    ; 重要: エラーオブジェクト変数の名前は$oWordErrorHandlerでなければならない
    $ErrorScriptline = $oWordErrorHandler.scriptline
    $ErrorNumber = $oWordErrorHandler.number
    $ErrorNumberHex = Hex($oWordErrorHandler.number, 8)
    $ErrorDescription = StringStripWS($oWordErrorHandler.description, 2)
    $ErrorWinDescription = StringStripWS($oWordErrorHandler.WinDescription, 2)
    $ErrorSource = $oWordErrorHandler.Source
    $ErrorHelpFile = $oWordErrorHandler.HelpFile
    $ErrorHelpContext = $oWordErrorHandler.HelpContext
    $ErrorLastDllError = $oWordErrorHandler.LastDllError
    $ErrorOutput = ""
    $ErrorOutput &= "--> COM Error Encountered in " & @ScriptName & @CRLF
    $ErrorOutput &= "----> $ErrorScriptline = " & $ErrorScriptline & @CRLF
    $ErrorOutput &= "----> $ErrorNumberHex = " & $ErrorNumberHex & @CRLF
    $ErrorOutput &= "----> $ErrorNumber = " & $ErrorNumber & @CRLF
    $ErrorOutput &= "----> $ErrorWinDescription = " & $ErrorWinDescription & @CRLF
    $ErrorOutput &= "----> $ErrorDescription = " & $ErrorDescription & @CRLF
    $ErrorOutput &= "----> $ErrorSource = " & $ErrorSource & @CRLF
    $ErrorOutput &= "----> $ErrorHelpFile = " & $ErrorHelpFile & @CRLF
    $ErrorOutput &= "----> $ErrorHelpContext = " & $ErrorHelpContext & @CRLF
    $ErrorOutput &= "----> $ErrorLastDllError = " & $ErrorLastDllError
    MsgBox(0, "COM Error", $ErrorOutput)
    SetError(1)
    Return
EndFunc   ;==>MyErrFunc