COM_ERR_IGN-COM_ERR_RET

本ページには広告が含まれています。

COM_ERR_IGNCOM_ERR_RET間でCOMエラーメッセージを出ないようにします。この間にエラーが発生した場合は、COM_ERR_FLGTRUEが設定されます。また、COMエラーが発生した箇所でERR_VALUEを返します。

構文
COM_ERR_IGN
//何等かのCOM処理
COM_ERR_RET
引数
戻り値

使い方

以下はインプットボックスに入力されたパスのブックを開くプログラムです。

UWSC
結果
プレーンテキスト

存在するパスが入力された場合はWorkbook オブジェクトの値を取得しますが、存在しない場合はCOMエラーが発生しプログラムが終了します。

プレーンテキスト

例外処理を使って書くと以下のようになります。存在しないパスを指定した場合WorkbookにはEMPTYが代入されEXCEPT句が実行されます。エラーが発生した時点でEXCEPT句に処理が飛ぶのでシート名の出力は行われません。

UWSC
結果
プレーンテキスト

COM_ERR_IGN-COM_ERR_RET内でエラーが発生するとその箇所でERR_VALUEが返されます。

以下の例では存在しないパスを指定した場合、Workbookに代入する箇所でCOMエラーが発生しWorkbookERR_VALUE代入がされます。<ruby>IF文<rt></rt></ruby>ERR_VALUEとの比較を行うことでエラーが発生したかどうかを判定できます。

またこの時点でCOM_ERR_FLGTRUEになります。

UWSC
結果
プレーンテキスト

CREATEOLEOBJ("InternetExplorer.Application")は前のプロセスが終了する前に生成すると前のプロセスをしようとしてエラーが発生します。以下はエラーが発生しなくなるまでInternetExplorer オブジェクトを生成し続けるプログラムです。InternetExplorer オブジェクトを生成できなかった場合COM_ERR_FLGTRUEが設定されループを繰り返すことになります。生成できた場合はCOM_ERR_FLGFALSEが設定されループを抜けることができます。

UWSC

プログラム実行例

コトバンクで指定した熟語の読みを調べる

4行目のwordに指定した単語の読み方をコトバンクで調べます。

コトバンクに掲載のない単語は取得できません。

UWSC
結果
プレーンテキスト
使用関数

COM_ERR_IGN-COM_ERR_RETCOM_ERR_FLGはメインルーチンが開始した時、COM_ERR_IGNを実行した時にFALSEが代入(初期化)されます。また、エラーが発生した時点でTRUEが代入されます。

UWSC

COMエラーの種類

名前が不明です。

存在しないメソッド・プロパティを使用したときに発生します。

UWSC
UWSC

クラス文字列が無効です, ProgID: "***"

存在しないクラス文字列を記述したことによるエラー。

プログラム

UWSC

メッセージ。

UWSC

RPC サーバーを利用できません。

COM_Error RPC サーバーを利用できません。

IE.Quitで閉じたIEを操作しようとしたときに発生します。

UWSC
UWSC

OLE error 8150002E, ProgID: "InternetExplorer.Application"

COM_Error:OLE Error 8150002E, ProgID: "InternetExplorer.Application"

IE.Quitで閉じてプロセスが残っている状態で再度IEを起動すると発生することがあります。

対策としては、コマンドプロンプトでプロセスを終了させる、EXEC関数で起動させるなどがあります。

UWSC
UWSC

以下はCOM_ERR_IGNで書く場合。

UWSC

例外が発生しました。

COM_Error 例外が発生しました。

スペルミスやページの読み込みが完了していないときにIE操作をすると発生します。

(メッセージなし)

COM_Error

生成されていないもしくは終了したオブジェクトにアクセスしようとしているなど。

原因がわからない場合は操作している対象のアプリ(OfficeならばVBAに移植するなどし)プログラムを実行するとエラーコードが表示されるので原因を特定するヒントになるかもしれません。

以下はExcelでセル番地が範囲外のためエラーとなっているプログラムの例。0行0列が範囲外なのは数値だと見てわかるが、これが変数でループとかしてるとよくやるミス。

UWSC

以下はUWSCで実行したときのエラー。

COM_Error Excel_1004_UWSC

以下は同じ動作をするプログラムをExcelに移植したプログラムとエラーメッセージ。

[開発]-[Visual Basic]-[挿入]-[標準モジュール]

UWSC
COM_Error Visual Basic 実行時エラー 1004

UWSCではただエラーとしかわからないが、Excelだとエラーコード1004と表示されます。1004は存在しないファイルを開こうとしたとき、存在しないセルアドレスにアクセスしたとき、という風にエラーの原因を絞ることができます。

管理者権限がないときもこのエラーが発生します。

以下はWshShell.RegDeleteでレジストリを削除しようとしたときのエラー。

Microsoft Visual Basic_実行時エラー-2147024891(80070005)

使い方

セルが編集状態のためCOMエラーが出て値の入力ができないのを、エラーが出なくなって値が入力できるまでループする処理。

UWSC