分かりやすく、使いやすく。

エラー一覧とエラー処理のサンプルコード

スポンサーリンク

VBScript で発生するエラー No の一覧をまとめました。エラー処理時のリファレンスとしてご活用ください。

  1. エラー処理のサンプルコード
  2. エラー番号とエラーメッセージの一覧


エラー処理のサンプルコード

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 文字セットの範囲が不正です。
スポンサーリンク