エラー一覧とエラー処理のサンプルコード
スポンサーリンク
VBScript で発生するエラー No の一覧をまとめました。エラー処理時のリファレンスとしてご活用ください。
エラー処理のサンプルコード
VBScript では「On Error Resume Next」と記述すると、それ以降にエラーが発生しても処理を中断しないようにすることができます。こうすることで発生したエラーの種類に応じた処理を記述することができるようになります。尚、「On Error Goto 0」で「On Error Resume Next」を解除することができるので、誤動作防止の観点からエラー処理の記述が終わったら必ず「On Error Goto 0」を記述しておいた方が良いです。
具体的なサンプルコードは次の通りです。条件分岐ではエラー番号に応じて処理を分岐していますが、エラー番号の一覧については、当ページ下部にあるエラー一覧を参照してください。
ちなみに VBScript では try catch の構文はサポートされていません。
VBScript(実行可能なサンプルコード) | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | Option Explicit Dim objFileSys Dim strFilePathFrom Dim strFilePathTo 'ファイルシステムを扱うオブジェクトを作成 Set objFileSys = CreateObject("Scripting.FileSystemObject") 'コピー元のファイルのパスを指定 strFilePathFrom = "c:\temp\コピー元.txt" strFilePathTo = "c:\temp\コピー先.txt" 'エラー発生時にも処理を続行するよう設定 On Error Resume Next 'コピー先に同名のファイルが無い場合のみコピー Call objFileSys.CopyFile(strFilePathFrom, strFilePathTo, False) 'エラーになった場合の処理 If Err.Number <> 0 Then 'エラー番号に応じた処理を記述する Select Case Err.Number Case 53 'コピー元のファイルが存在しない場合の処理をここに記述 WScript.Echo "コピー元のファイルがありませんよ!" Case 58 'コピー先にファイルが存在する場合の処理をここに記述 WScript.Echo "コピー先にファイルが存在するので先に移動してください。" Case Else WScript.Echo "予期しないエラーが発生しました。" & vbCrLf & _ "エラー番号:" & Err.Number & vbCrLf & _ "エラー詳細:" & Err.Description End Select 'エラー情報をクリアする Err.Clear End If '「On Error Resume Next」を解除 On Error Goto 0 Set objFileSys = Nothing |
エラー番号とエラーメッセージの一覧
エラー 番号 |
エラーメッセージ |
---|---|
5 | プロシージャの呼び出し、または引数が不正です。 |
6 | オーバーフローしました。 |
7 | メモリが不足しています。 |
9 | インデックスが有効範囲にありません。 |
10 | 固定サイズの配列、または現在、この配列はサイズを変更できない状態にあります。 |
11 | 0 で除算しました。 |
13 | 型が一致しません。 |
14 | 文字列領域が不足しています。 |
17 | 要求された操作を実行できません。 |
28 | スタック領域が不足しています。 |
35 | Sub または Function が定義されていません。 |
48 | DLL 読み込み時のエラーです。 |
51 | 内部エラーです。 |
52 | ファイルの名前または数が不正です。 |
53 | ファイルが見つかりません。 |
54 | ファイルのモードが不正です。 |
55 | ファイルは既に開かれています。 |
57 | デバイス I/O (入出力) エラーです。 |
58 | 既に同名のファイルが存在しています。 |
61 | ディスクの空き容量が不足しています。 |
62 | ファイルの最後を超えた入力を行おうとしました。 |
67 | ファイル数が多すぎます。 |
68 | このデバイスは使用できません。 |
70 | 書き込みできません。 |
71 | ディスクは準備されていません。 |
74 | 異なったドライブでも名前の変更はできません。 |
75 | パスまたはファイル名が無効です。 |
76 | パスが見つかりません。 |
91 | オブジェクト型の変数は設定されていません。 |
92 | For ループは初期化されていません。 |
94 | Null 値の使い方が不正です。 |
322 | 必要なテンポラリ ファイルが作成できません。 |
424 | オブジェクトがありません。 |
429 | ActiveX コンポーネントはオブジェクトを作成できません。 |
430 | クラスはオートメーションをサポートしていません。 |
432 | オートメーションの操作中にファイル名またはクラス名を見つけられませんでした。 |
438 | オブジェクトでサポートされていないプロパティまたはメソッドです。 |
440 | オートメーション エラーです。 |
445 | このオブジェクトではサポートされていない操作です。 |
446 | このオブジェクトは、名前付き引数をサポートしていません。 |
447 | 現在の国別情報の設定は、このオブジェクトではサポートされていません。 |
448 | 名前付き引数が不正です。 |
449 | 引数は省略できません。 |
450 | 引数の数が一致していません。または不正なプロパティを指定しています。 |
451 | オブジェクトがコレクションではありません。 |
453 | 指定された DLL に関数が定義されていません。 |
455 | コード リソースのロックエラーです。 |
457 | このキーは既にコレクション内の要素に関連付けられています。 |
458 | VBScript でサポートされていないオートメーションが変数で使用されています。 |
462 | リモート サーバー マシンが存在しないか、利用できません。 |
481 | ピクチャが不正です。 |
500 | この変数は宣言されていません。 |
501 | 不正な代入です。 |
502 | このオブジェクトは safe モードでは作成できません。 |
503 | このオブジェクトは safe モードでは初期化できません。 |
504 | このオブジェクトは safe モードでは作成できません。 |
505 | 不正な参照です。 |
506 | クラスが定義されていません。 |
507 | 例外が発生しました。 |
1001 | メモリが不足しています。 |
1002 | 構文エラーです。 |
1003 | ':' がありません。 |
1005 | '(' がありません。 |
1006 | ')' がありません。 |
1007 | ']' がありません。 |
1010 | 識別子がありません。 |
1011 | '=' がありません。 |
1012 | 'If' がありません。 |
1013 | 'To' がありません。 |
1014 | 'End' がありません。 |
1015 | 'Function' がありません。 |
1016 | 'Sub' がありません。 |
1017 | 'Then' がありません。 |
1018 | 'Wend' がありません。 |
1019 | 'Loop' がありません。 |
1020 | 'Next' がありません。 |
1021 | 'Case' がありません。 |
1022 | 'Select' がありません。 |
1023 | 式がありません。 |
1024 | ステートメントがありません。 |
1025 | ステートメントの末尾が不正です。 |
1026 | 整数型の定数がありません。 |
1027 | 'While' または 'Until' がありません。 |
1028 | 'While'、'Until' または終了するためのステートメントがありません。 |
1029 | 'With' ステートメントがありません。 |
1030 | 識別子が長すぎます。 |
1031 | 不正な数字です。 |
1032 | 文字が正しくありません。 |
1033 | 終了していない文字列型の定数です。 |
1034 | 終了していないコメントです。 |
1037 | 'Me' キーワードの使い方が不正です。 |
1038 | 'loop' に 'do' がありません。 |
1039 | 不正な 'exit' ステートメントです。 |
1040 | 'for' ループを制御する変数が不正です。 |
1041 | 名前が二重に定義されています。 |
1042 | 行頭のみ許されるステートメントです。 |
1043 | ByVal でない変数に割り当てられません。 |
1044 | Sub プロシージャを呼び出すときに、かっこを使うことはできません。 |
1045 | リテラル定数を指定してください。 |
1046 | 'In' がありません。 |
1047 | 'Class' がありません。 |
1048 | Class の内部で宣言しなければなりません。 |
1049 | プロパティの宣言に Let、Set または Get がありません。 |
1050 | 'Property' ステートメントがありません。 |
1051 | プロパティで指定した引数の数は、同じでなければなりません。 |
1052 | Class では、既定のプロパティ/メソッドを複数個選択することはできません。 |
1053 | クラスの初期化または終了に引数がありません。 |
1054 | Property set または Property let には少なくとも 1 つの引数が必要です。 |
1055 | 'Next' が不正です。 |
1056 | 'Default' は 'Property'、 'Function' または 'Sub' の場合にのみ指定できます。 |
1057 | 'Default' 指定する場合には、'Public' も指定されていなければなりません。 |
1058 | 'Default' の指定は、 Property Get にのみ適用されます。 |
4096 | Microsoft VBScript コンパイル エラー |
4097 | Microsoft VBScript 実行時エラー |
5016 | Regular Expression オブジェクトがありません。 |
5017 | 正規表現で構文エラーが発生しました。 |
5018 | 文字の繰り返しを表す正規表現演算子が不正です。 |
5019 | 正規表現の中に ']' を指定してください。 |
5020 | 正規表現の中に ')' を指定してください。 |
5021 | 文字セットの範囲が不正です。 |
スポンサーリンク
- VBScript
- ソースコード上で1行の処理を改行する方法
- 文字列に改行を挿入する方法
- 文字列の一部を置換する方法
- エラー一覧とエラー処理のサンプルコード
- 当月月初、翌月月初、前月月初の日付を取得する方法
- 当月月末、翌月月末、前月月末の日付を取得する方法
- GUI と CUI のどちらで実行されたかを判定する方法
- 引数の数を取得する方法
- 引数を受け取る方法
- 引数に半角スペースを含める方法
- yyyymmdd 形式の文字列で現在日付を取得する方法
- ワードファイルをテキストファイルに変換して出力する方法
- 時間を指定して実行を一時停止する方法
- 別のVBScriptファイルを実行して戻り値を受け取る方法
- 別のVBScriptファイルを実行する方法
- 別のVBScriptファイルに引数を渡して実行する方法
- 配列のサイズを動的に変更する方法
- 実行中のスクリプトのファイル名・フルパスを取得する方法
- For Each で配列の全ての要素を処理する方法
- 配列の要素数を取得する方法
- 配列の要素を1つずつ処理する
- 配列を結合して CSV や TSV などの文字列にする方法
- ファイル・フォルダ操作
- フォルダ内のファイル一覧を取得する
- フォルダ内のフォルダ一覧を取得する
- ファイルの拡張子を調べて、拡張子ごとに処理を分ける方法
- ファイルをコピーする方法
- 拡張子無しのファイル名を取得する方法
- CSV ファイルを TSV ファイルや他の区切り文字列に変換する方法
- ファイルの内容を1つの文字列として一括で読み込む方法
- フォルダ内のファイル数を取得する方法
- ファイルの内容を1行ずつ読み込む方法