VBエラーとその対処方法

 

VB初心者のために、実際に発生したエラーとその対処方法を書いてみました。
なお、環境の違い、プログラムロジックの違いなどがあり、
あくまでも問題解決の1例、ヒントとしてとらえて下さい。

開発環境
OS言語:WindowsMe、7/VB6(SP5)/Access2000〜2010/ADO
終了は[×](閉じる)
 
ヒント集
VBコンパイルエラー VB実行時エラー
VBエラー その他エラー
 
エラー エラー内容
VBコンパイルエラー
Q:コンパイルエラー:引数は省略できません。
Q:コンパイルエラー:Sub,Functionが定義されていません。
Q:コンパイルエラー:変数が定義されていません。
Q:コンパイルエラー:ユーザー定義型は定義されていません。
Q:コンパイルエラー:名前が適切ではありません。
Q:コンパイルエラー:プロパティの使い方が不正です。
Q:コンパイルエラー:メソッドまたはデータメンバーが見つかりません。
Q:コンパイルエラー:引数の数が一致していません。または不正なプロパティを指定しています。
 
VB実行時エラー
Q:実行時エラー 操作はキャンセルされました
Q:実行時エラー 行ハンドルは削除された行、又は削除のためにマークされた〜
Q:実行時エラー 多段階のOLEDBの操作でエラーが発生しました。各OLEDBの〜
Q:実行時エラー SQLステートメントが正しくありません
Q:実行時エラー ロックできませんでした。
Q:実行時エラー 構文エラー:演算子がありません。
Q:実行時エラー 1つ以上の必要なパラメータの値が設定されていません?
Q:実行時エラー CommandオブジェクトのCommandテキストが設定されていません?
Q:実行時エラー テーブル'社員'はほかのユーザーが排他的に開いているか〜
Q:実行時エラー 指定されたフィールド'[出荷日]'がSQLステートメントのFORM句〜
Q:実行時エラー レコードが大きすぎます。テーブルまたは規則を〜
Q:実行時エラー 指定されたデータ量がフィールドサイズをこえています。〜   開発環境ではエラーは出ないが、EXEではエラーになる。
Q:実行時エラー 抽出条件で型が一致しません。
Q:実行時エラー 種類が一致しません。
Q:実行時エラー Binding Collection Error 
Q:実行時エラー 多段階の操作でエラーが発生しました。各状態の値をチェックして下さい 
Q:実行時エラー 複数ステップの操作でエラーが発生しました。各状態の値を確認して下さい 
Q:実行時エラー ディスクまたはネットワ−クのエラーです。 
Q:実行時エラー テーブル'商品'はマシン'XXXXX'のユーザー'admin'によって排他ロックされています。
Q:実行時エラー '*'(在庫)で選択したフィールドはグループ化できません。
Q:実行時エラー データプロバイダーまたはほかのサービスがE_FAIL状態を返しました。
Q:実行時エラー'5' プロシジャーの呼び出し、または引数が不正です。   開発環境ではエラーは出ないが、EXEではエラーになる。
Q:実行時エラー'6' オーバーフローしました。
Q:実行時エラー'7' メモリーが不足しています。
Q:実行時エラー'9' インデックスが有効範囲にありません
Q:実行時エラー'11' 0で除算しました。
Q:実行時エラー'13' 型が一致しません。
Q:実行時エラー'28' スタック領域が不足しています。
Q:実行時エラー'52' ファイル名または番号が不正です。
Q:実行時エラー'53' ファイルが見つかりません。
Q:実行時エラー'54' ファイルモードが不正です。
Q:実行時エラー'61' オーバーフローしました。
Q:実行時エラー'61' ディスクの空き容量が不足しています。
Q:実行時エラー'62' ファイルにこれ以上データがありません。
Q:実行時エラー'70' 書き込みできません。
Q:実行時エラー'75' パス名が無効です。
Q:実行時エラー'76' パスが見つかりません。
Q:実行時エラー'91' オブジェクト変数またはwithブロック変数が設定されていません。
Q:実行時エラー'94' NULLの使い方が不正です
Q:実行時エラー'339' コンポーネント'MSDATLST'、またはその依存関係のひとつ〜
Q:実行時エラー'364' 既にアンロードされています。
Q:実行時エラー'380' プロパティの値が不正です。
Q:実行時エラー'545' フィールドまたはデータメンバーに連結できません
Q:実行時エラー'713' 次のクラスは登録されていません。
以下のファイルをインストールして下さい MSSTDFMT.DLL
Q:実行時エラー'2455'  指定した式にVisibleプロパティに対する正しくない参照が含まれます。
Q:実行時エラー'3001' 引数が間違った型、または許容範囲外であるか、競合〜
Q:実行時エラー'3021' BOFとEOFのいずれかTRUEになっていか、または現在の〜
Q:実行時エラー'3051' ファイル"\xxx\yyy.mdb"を開くことが出来ませんでした
Q:実行時エラー'3078' 入力テーブルまたはクエリ'車種'が見当たりませんでした。
Q:実行時エラー'3201' VALUEメソッドは失敗しました。'Field'オブジェクト
Q:実行時エラー'3219' このコンテキストで操作は許可されていません
Q:実行時エラー'3251' オブジェクトまたはプロバイダは要求された操作を実行〜
Q:実行時エラー'3265' 要求された名前または序数に対応する項目がコレクション〜
Q:実行時エラー'35773' MinDateプロパティとMaxDateプロパティの範囲にない日付が指定されました。
Q:実行時エラー'3704' オブシエクトが閉じている場合は操作は許可されません
Q:実行時エラー'3705' オブシエクトがひらいている場合は操作は許可されません
Q:実行時エラー'3709' 閉じている、または無効な接続を参照するオブジェクト〜
Q:実行時エラー'6145' 列のインデックスが不正です。
Q:実行時エラー'6148' 不正な行番号です。
Q:実行時エラー'6160' データアクセスエラーです。
Q:実行時エラー'7005' 行セットが使用できません。
Q:実行時エラー'7008' 現在の行は使用できません。
Q:実行時エラー'7009' 行が見つかりません。
Q:実行時エラー'7866' データベースファイルがないか、他のユーザーが排他モードで開いているため、このデータベースを開くことができません。
Q:Windows7でVB6を実行した時の、実行エラーの対応方法
 
VBエラー
Q:表示窓や枠がいつもより異常に長くなっている。
Q:コーデングの赤文字が消えない。
Q:PGが無限ループした。
Q:Filterで日本語がヒットしない
Q:フィールドまたはデータメンバーに連結できません'入社日'
Q:DB最適化 このデータベースはマシン'XXXXX'のユーザーAdminが排他的に〜
Q:Filterで2度読みされた。重複データが発生した。
Q:TEXTをMultiline指定で入力したら、表示が..のゴミ表示になった。
Q:テーブル又規則を見つけることができません。
Q:DataGridが表示しない ACCESS95は表示するがACCESS2000では表示しない。
Q:DataGridで項目を追加すると、実行時に見出しが消える。
Q:DB転送のタイミング 
Q:FormLoadが実行されてしまう 
 
その他エラー
Q:ファイルまたはフォルダの削除エラー。
Q:パソコンを変えたら解像度は同じなのに画面サイズが小さくなった。
Q:序数313がダイナミックライブラリ iertutil.dllから見つかりませんでした。
Q:  
 



 
■ VBコンパイルエラー


Q:コンパイルエラー:引数は省略できません。
A1:With deMain.rscmdHaicho .Filter=    でFilterの前の「.」がなかった

Q:コンパイルエラー:Sub,Functionが定義されていません。

A1:標準モジュールがPrivate Subになっていた。

A2:モジュールが作られていない。

A3:モジュール名がパンチミス

A4:モジュールを注釈にしたが、呼ぶ方を注釈にしていなかった。


Q:コンパイルエラー:変数が定義されていません。

A1:名前が違っていた。
 DataGrid2.Refresh  ではなく DataGrid明細.Refresh だった。

A2:項目名パンチミス。
 :cn2−−>cn1に変更 パンチミス

A3:変数の通用範囲外だった。
 モジュール内宣言でDim WABC AS STRING
 を別モジュールで使用していた。
 別モジュールで使用する時は、Private WABC AS STRINGと記入する。

A4:項目名がフォームに無かった。
 dtp出荷日 = Format(Date,"Date,"yyyy/mm/dd")
 dtp出荷日がFormに無かった。dtp出荷日の作成忘れ。

A5:項目名がフォームに無かった。
 dtp発注日開始は別フォームのためabc310.がもれていた。
誤:wx発注日開始 = Format(dtp発注日開始.Value, "yyyy/mm/dd")

正:wx発注日開始 = Format(shap310.dtp発注日開始.Value, "yyyy/mm/dd")


Q:コンパイルエラー:ユーザー定義型は定義されていません。

A1:参照設定がされていない。
  dim cat as adox.catalog −−>参照設定する MS.ADO Ext 2.1 For DDL〜

Q:コンパイルエラー:名前が適切ではありません。

A1:標準モジュールでTEST1が2ヵ所入っていた。
A2:項目名がダブッている。
A3:呼び出し名が重複している。


Q:コンパイルエラー:プロパティの使い方が不正です。

A1:text1.Enabled=Falseで = が抜けていた。

A2:正しく記入しなかった
誤 lbl商品コード = False
正 lbl商品コード.Enabled = False

!!ヒント!!
記入が不明な時は、text1で . をつけて何が表示されるかを見る。

不明な時は、いったん削除して再入力する。


Q:コンパイルエラー:メソッドまたはデータメンバーが見つかりません。

A1:項目名誤り パンチミス−−>
  ・誤 IsDate(txt月度.txt)−−>正 IsDate(txt月度.Text)。
  
A2:記入誤り ラベルに誤って.textを指定していた。
  lbl在庫 = CStr(Format(Val(txt前残.text) + Val(txt受入.text) - Val(lbl払出.text),"#,##0"))
  ・誤 Val(lbl払出.text)−−>正 Val(lbl払出)
     

Q:コンパイルエラー:引数の数が一致していません。または不正なプロパティを指定しています。

A1:Right関数で切取開始位置を入れていた

Right(string, length)
誤:Right(ABC, 1 ,10) ----->正:Right(ABC,10)

Midが開始位置があるので入れてしまった。勘違い

これは
Mid ( 対象文字列 , 切取開始位置 , 切取文字数 )
Left ( 対象文字列 , 切取文字数 )
Right ( 対象文字列 , 切取文字数 )



 
■ VB実行時エラー


Q:実行時エラー'''-2147217842(80040e4e) 操作はキャンセルされました。
A1:桁あふれ転送。
 RDBは2桁で、表示転送元が4桁だった。

Q:実行時エラー'''-2147217885(80040e23) 行ハンドルは削除された行、又は削除のためにマークされた行を参照しました。
A1:DBを削除後に参照している。
A2:DBを読み込んでいない。

Q:実行時エラー'''-2147217887(80040e21) 多段階のOLEDBの操作でエラーが発生しました。 各OLEDBの状態の値をチェックして下さい。

A1:rs1![住所2]=str入力でstr入力がNULLになっていた。


Q:実行時エラー'''-2147217900(80040e14) SQLステートメントが正しくありません
 Delete、Insert、Procedure、SelectまたはUpdateを使用して下さい。
A1:ACCESSのDBが開いていた。
A2:rs1.Open "社員", cn1, adOpenStatic, adLockOptimistic で社員がDBになかった。
A3:テーブルに無いと発生する。テーブル名パンチミス

Q:実行時エラー'''-2147217900(80040e14) ロックできませんでした。

A1:ACCESSのDBが開いていた。
A2:rs1.Open "社員", cn1, adOpenStatic, adLockOptimistic で社員がDBになかった。
  テーブルに無いと発生する。
A3:Cmd.Executeでエラーが発生した-->
   エラー個所はここだが、直接の原因はこの前の処理で異常終了していた。
   したがってメッセージとは関係ない要因のときがあるので、1ステップずつチェックしたほうが良い。

Q:実行時エラー'''-2147217900(80040e14) 構文エラー:演算子がありません。

A1:SQL文にSpaceが余計に入っていた。
    rs1.open strSQL,cn1,adopenstatic,adlockoptimisticの strSQLでエラー
    strSQL = "SELECT [社員].* FROM [社員] WHERE ([社員].[社員NO] =   '" & dtp社員NO.Value & "')"
    「誤り」 [社員].[社員NO] =■■■'" −>「正」 [社員].[社員NO] = '"
■■■がSPACE

A2:SQL文にSpaceが余計に入っていた。
   mySQL2 = "SELECT 出荷依頼.*" & _
        " From 出荷依頼" & _
        " Where (出荷依頼.出荷依頼要求日 = datevalue('" & shap020.dtp出荷日開始.Value & "')) and ((出荷依頼.出荷依頼種別) <> '3'■)" & _
        " ORDER BY 出荷依頼.出荷依頼要求日, 出荷依頼.量産区分"
 ■がSPACE

*調べるコツは、SQL文をエディターにコピーして見るとスペースか良くわかる。


Q:実行時エラー'''-2147217900(80040e14) 1つ以上の必要なパラメータの値が設定されていません?

SQL文の項目名違い、テーブル名違いが多い。
A1:
 :テーブル名、項目名が存在しない  パンチミス。
  デバッグではRs1.Closeにとぶが、通常ここではなく別のエラー が多い

A2:
SQL文が違っていた。コピーしたためDB名が前のままになっていた。

  wwSQL3 = "SELECT [入荷予定].* FROM [入荷予定] WHERE [入荷予定]![商品NO] = '" & ww商品NO & "' and [入荷予定]![商品行NO] = '" & ww商品行NO & "' ORDER BY [出荷依頼]![商品NO]"

  誤:[出荷依頼]![商品NO]
  正:[[入荷予定]![商品NO]

A3:
SQL文が違っていた。WHERE文の最後の)が1つ多い

A4:
SQL文の変数が""になっていた

   wwSQL2 = "SELECT [出荷明細].* FROM [出荷明細] WHERE [出荷明細].[出荷NO] = '" & ww出荷NO & "' and [出荷明細].[出荷行NO] = '" & ww出荷行NO & "' and [出荷明細].[入荷予定連番] = '" & ww入荷予定連番 & "' ORDER BY [出荷明細].[出荷NO], [出荷明細].[出荷行NO]"
  rs2a.CursorLocation = adUseClient
  rs2a.Open wwSQL2, cna1, adOpenStatic, adLockOptimistic  <−−−ここでエラー

「ww入荷予定連番」にデータが転送されていなかった。""になっていた。


Q:実行時エラー'''-2147217908(80040e0c) CommandオブジェクトのCommandテキストが設定されていません?

A1:SetしたSQL文の項目名が違っていた。パンチミス
Set rs1=cmd.Executeで発生した。
SQL文がないとき発生する。

A2:wwSQL3の中味が空だった。
rs3a.Open wwSQL3, cna1, adOpenStatic, adLockOptimisticで、wwSQL3にSQL文が転送されていなかった。

A3:ロジック誤り
Option3.Value = Trueのロジックが無かったため、SQL文に転送されずエラーになった。  

If shap020.Option1.Value = True Then
 mySQL2 = "SELECT 出荷依頼.*" & _
   " From 出荷依頼" & _
   " Where (出荷依頼.出荷リストフラグ = '1')" & _
   " ORDER BY 出荷依頼.出荷依頼要求日, 出荷依頼.量産区分"
 ElseIf shap020.Option2.Value = True Then
 mySQL2 = "SELECT 出荷依頼.*" & _
   " From 出荷依頼" & _
   " Where (出荷依頼.出荷リストフラグ = '2')" & _
   " ORDER BY 出荷依頼.出荷依頼要求日, 出荷依頼.量産区分"
Else
 
End If
 で
rs1a.Open mySQL2, cna1, adOpenStatic, adLockReadOnly <---ここでエラー発生


A4:オプションの初期設定(Option1.Value = True)をしなかったため、 wwSQL1が空になり実行でエラーになった。

if Option1.Value = True  then
  wwSQL1 = "SELECT 出荷依頼.* From 出荷依頼"
endif

  rs1a.Open wwSQL1, cna1, adOpenStatic, adLockReadOnly <---ここでエラー発生
  
A5:SQL文ファイル名誤り
wwSQL5 = "SELECT [商品].* From [商品] ORDER BY [商品].[商品コード]"
rs5a.CursorLocation = adUseClient
rs5a.Open wwSQL2, cna1, adOpenStatic, adLockOptimistic  ここでエラー

rs5a.Open wwSQL5, cna1, adOpenStatic, adLockOptimistic  正解


Q:実行時エラー'''-2147467259(80004005) テーブル'社員'はほかのユーザーが排他的に開いているか、 既にユーザーインターフエイスを介して開いているのでプログラムによって操作することはできません。

A1:AccessDBがデザインで開いていた。



Q:実行時エラー'''-2147467259(80004005) 指定されたフィールド'[出荷日]'がSQLステートメントのFORM句にある複数のテーブルを参照しました。

A1:テーブル名がなかった [出荷日]-->[受注]![出荷日]



Q:実行時エラー レコードが大きすぎます。テーブルまたは規則を

A1:CHAR(10)のサイズ10が違っていた
strSQL = "CREATE TABLE 社員([社員NO] CHAR(8) PRIMARY KEY,[氏名] CHAR(10),[住所] CHAR(30),[TEL] CHAR(15)," & _
"[入社日] DATE,[家族数] INTEGER)"

Q:実行時エラー 指定されたデータ量がフィールドサイズをこえています。
データ量を減らし、挿入また貼り付けを行ってください。
この場合、開発環境で実行する時はエラーは出ないが、「XXXX.exeの作成」でXXXX.exeを作って、それから実行すると何故かこのエラーが出てしまう。

いろいろやった結果、DBの転送にMIDを入れて、DBの桁以上伝送できないようにしたら直った。
ただし、なぜ開発環境では正常に動いていたかは不明?

A1:
変更前: rs2a![品目] = w品目

変更後: rs2a![品目] = Mid(w品目, 1, 10)

*rs2a![品目]の桁数は10桁




Q:実行時エラー 抽出条件で型が一致しません。
A1:リテラルが'14' のところ14になっていた。
  誤 wwSQL : "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = 14"
  正 wwSQL : "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = '14'"
    日付けは #2002/05/01#

以下、ダメ
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " + para2 + " ORDER BY 市町村.JISコード" 'ダメ抽出条件で型が一致しません
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " + "para2" + " ORDER BY 市町村.JISコード" 'ダメ
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " & para2 & " ORDER BY 市町村.JISコード" 'ダメ

以下、OK
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = '14'" 'OK
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = " + "'14'" + " ORDER BY 市町村.JISコード" 'OK
wwSQL2 = "SELECT 市町村.* FROM 市町村 WHERE 市町村.都道府県ID = '" + para2 + "' ORDER BY 市町村.JISコード元" 'OK



Q:実行時エラー 種類が一致しません。
A1:転送先が数字項目なのに文字項目を転送していた。

誤:rs3a![受注数量] = W発注数
    数字項目   文字項目

正:rs3a![受注数量] = W発注数
    数字項目   数字項目



Q:実行時エラー Binding Collection Error 
Fiold not up datable,Bound Property NAME:Text,Field Name:出荷日
A1:両方指定している時発生する。
 Set txt積込日.DataSource = rs1 
 txt積込日.DataField = "出荷指示日" と プロパティで指定した。


Q:実行時エラー 多段階の操作でエラーが発生しました各状態の値をチェックして下さい 
A1:部門−社員で社員の転送に数字項目に文字を送っていた
A2:受桁より送り桁が大きかった。

   DBの項目数が12桁のところ、コンボボックスで20桁入力していた



Q:実行時エラー 複数ステップの操作でエラーが発生しました。各状態の値を確認して下さい。
A1:DBの項目数が5桁のところ、定数で6桁を送っていた

  rs4a![受注先] = "123456"
     5桁     6桁
     
  誤 5桁 --->正 6桁 


Q:実行時エラー '-2147467259(80004005)':  ディスクまたはネットワ−クのエラーです。
A1:ネットワ−ク回線が切断されている。



Q: 実行時エラー'-2147467259(80004005)':テーブル'商品'はマシン'XXXXX'のユーザー'admin' によって排他ロックされています。
A1:DBが開いていた。



Q: 実行時エラー '*'(在庫)で選択したフィールドはグループ化できません。
A1:グループ化の時は*指定ではなく、個別に指定すること。


'引当在庫集約 wwSQL3b = "SELECT [引当在庫].*" & _
" From [引当在庫]" & _
" Where [引当在庫].[削除区分] = '0'" & _ " GROUP BY [引当在庫].[オーダーNO],[引当在庫].[ロット],[引当在庫].[品目コード],[引当在庫].[倉庫コード],[引当在庫].[ロケーションコード],[引当在庫].[ランクコード],[引当在庫].[評価区分],[引当在庫].[巻数]" & _
" ORDER BY [引当在庫].[オーダーNO],[引当在庫].[ロット],[引当在庫].[品目コード],[引当在庫].[倉庫コード],[引当在庫].[ロケーションコード],[引当在庫].[ランクコード],[引当在庫].[評価区分],[引当在庫].[巻数]"

rs4b.CursorLocation = adUseClient
rs4b.Open wwSQL3b, cna1, adOpenStatic, adLockOptimistic


'引当在庫集約
wwSQL3b = "SELECT [引当在庫].[オーダーNO],[引当在庫].[ロット],[引当在庫].[品目コード],[引当在庫].[倉庫コード],[引当在庫].[ロケーションコード],[引当在庫].[ランクコード],[引当在庫].[評価区分],[引当在庫].[巻数]" & _
以下同じ



Q: 実行時エラー'-2147467259(80004005)':データプロバイダーまたはほかのサービスがE_FAIL状態を返しました。
現象:VB6をWindows7で実行したらこのエラーが出た。

PG概要はDBの追加で、[追加]ボタンをクリックすると、DBに追加して、DATAGRIDに追加データが表示されるPG。

エラー発生場所:rs2a.Update     ここでエラー発生

WindowsXPでは、いままで問題なく動いていたが、Windows7で実行したらこのエラーになった。
このPGをコピーして、別DB更新のPGを作っているがこれは問題なく動いている。

原因:まったく不明

応急処理:ABC.exeを作り、ABC.exeを互換性にすると問題なく動く。

ABC.exe右クリック → プロパティ → 「互換性」タブ → □「互換モードでこのプログラムを実行する。」にチェックを入れる。

但し、ABC.exeをコピーすると「互換性」チェックは外れます。
それと、ABC.exeをサーバーに置いてあると「互換性」チェックは付けられません。
従って、ABC.exeはサーバーにはおけず、クライアントPCに置くことになります。




Q:実行時エラー'5' プロシジャーの呼び出し、または引数が不正です。
 開発環境ではエラーは出ないが、EXEではエラーになる。

A1:SetFocusをform_Loadで指定するとこのエラーが出る。

txt発注.SetFocusをform_Loadで指定してしまった。

PGを立ち上げて画面が表示する前にこのエラーが出る時は、SetFocusをForm_Loadで指定しています。
 対策として
  起動時のSetFocusはform_Activateで指定すれば問題なく動きます。

良く見落とすのは、Form_Load内でCALLしているモジュールが、そのモジュール内でtxt発注.SetFocusしているとこれもエラーになります。
Form_LoadだけPGを見ているとバグはつぶれません。要注意!!

「SetFocusはForm_Loadが終了後」と覚えておきましょう!!

A2:txt納期.SetFocusで発生した。
   飛び先のtxt納期がtxt納期.Enabled = Falseになっているとエラーになる。
   飛び先がEnabled = Falseになっている時は、SetFocusしない事。

A3:感じとして移動先がFalseになっていると発生しやすいみたいだ。
 時間をおくと(DoEvents)なおる?(応急処理?)。
    ・今回の発生
   メインPGよりPG1.show vbModal,Me
         PG2.show vbModal,Me   PG2の前で発生
         Unload Me     
   対策 PG2の前にDoEventsを入れたら直った。
         PG1.show vbModal,Me
         DoEvents
         PG2.show vbModal,Me
         Unload Me 


A4:BBB.Show.vbModal,AAA
  CCC.Show.vbModal,AAA   でエラー発生

他サイトより参照
・ADOの時はDoEventsを挟み込む。
・プロパティの値を直接参照したりする記述を行っている時に起るときがある。
   -->プロパティを作業変数に代入して使用。
・新しいDBにオブジェクトをコピーしたら直った。
・デバッグ中は絶対に文字列を入れていた変数が、実行時にはNullのまま関数に渡されたてエラーになった。
・GotFocus、LostFocusでフォーカス制御を行ってると発生する時がある。
・FormのActivateイベントでSetFocusすると発生する時がある。
・VB6で作成したEXEをXPで実行すると発生する時がある。
   -->互換モードで実行(EXEファイルを右クリックしてプロパティ)
 

Q:実行時エラー'6' オーバーフローしました。
A1:割り算で分母が0だった。
A2:日付の処理でDATEからSTRINGで直った(何処理か不明)


Q:実行時エラー'7' メモリーが不足しています。
A1:メモリー不足-->パソコンの再立上げ
  画面プロパテイのパフォーマンスが10%以下になると出やすくなる。
  VBのウインドウにモジュールを多く表示しているとメモリーを食う
    −−>表示を最大にすると右上に「×」が表示されるのですべて閉じる
  EXCELなどマルチであまりアプリケーションを立ち上げないこと。

Q:実行時エラー'9' インデックスが有効範囲にありません
A1:テーブル数より大きいテーブルを指定した時、発生する
 ・DataGrid使用で項目以上に転送した。
 ・DataGrid1.Columns(0)〜(5)のところ、Columns(6)を指定した。
 ・DataGrid1とDataGrid2を間違った (Columnsが項目以上)。
 ・DataGrid1.Columns(5).TEXTの内容がNULLだった。


DataGridでは初期画面で2項目表示されているが、その画面を一切修正せずにコーデングする おまかせ型と画面修正型がある。
 おまかせ型:全てコーデングする、画面を修正してはいけない(集計クエリーの表示など表示項目が不明な時に使用する)
 画面修正型:表示項目を全て設定する(通常はこちら)


Q:実行時エラー'11' 0で除算しました。
A1:0で割った-->ifで迂回する。


Q:実行時エラー'13' 型が一致しません。
A1:数値項目に文字を入力した。

A2:IF文の記入誤り
  誤 IF aa = 'A' or 'B' --->正 IF aa = 'A' or aa = 'B'

A3:数値項目にnullを転送していた。

A4:計算式に""があった。
  計算の前にIF文でチェックしておく。
  IF txt出荷数.text = "" then
    txt出荷数.text = 0
  END IF

A5:桁がずれていた
7桁のところ6桁になっていた。

誤 2012/1
正 2012/01



Q:実行時エラー'28' スタック領域が不足しています。
A1:PGが無限ループした。

A2:SetFocusの連鎖、Sub、Functionの呼び合い

A3:Clickイベントで同じ対象のコントロールの値を変化するとイベントの連鎖が発生する。

  ・Check1.Value=1はしない方が良い。オプションボタンを使用する。

  ・ClickイベントでDataGridなど同じ自分の項目をいじると、またClickイベントが発生して無限ループとなる

A4:Formatのコントロールが多すぎる。

A5:DataGridでループ項目が多すぎる。

   for j=1 to rs1.fields.count
      DataGrid1.Splits(0).Columns(j - 1).Width = 1330
   next j
     でfields.countを27から10にしたら直った。

A6:最新のSPをあてる。



Q:実行時エラー'52' ファイル名または番号が不正です。
A1:テキストファイルの読み込みでOPENしていなかった。

A2:ファイル名が違っていた。

A3:ネットワークの権限がない。

A4:ファイルがサーバーにある時、ファイルのパスが開通していない。

A5:ネットワークトラブルでサーバーのファイルが読めない。


Q:実行時エラー'53' ファイルが見つかりません。
A1:TEST01.TXTのファイルがなかった。
A2:別名でファイル指定していた。
A3:ファイル名のパンチミス


Q:実行時エラー'54' ファイルモードが不正です。
A1: ファイルNOの誤り
Open strOUTFile For Output As #2 で、 Printは #1を指定していた。

誤   Print #1, wwoutput

正   Print #2, wwoutput


Q:実行時エラー'61' オーバーフローしました。
A1:項目の桁が足りない-->Longに変更。


Q:実行時エラー'61' ディスクの空き容量が不足しています。
A1:サーバーのDISK容量が不足していた。
最初はクライアント側のDISK容量だと思っていたが、サーバーDB修復再配置処理でもディスクの空き容量が表示されたので、VBのプログラムやクライアント側のDISK容量ではなくサーバー側であった。

A1:古い入力データで処理したためDISK容量が発生した。
ちょつと考えずらいが、古い日付で処理したため、エラーリストが多くなり容量不足が発生したと思われる。
正しい入力データで処理したら正常に終わった。


Q:実行時エラー'62' ファイルにこれ以上データがありません。
A1:CSVファイルの項目が少ない。
A2:入力レイアウトの「,,,」の件数が少ない時。


Q:実行時エラー'70' 書き込みできません。
A1:CSVファイルを書き込みしようとしたが、書き込みファイルが開いていた。
   書き込みファイルを閉じれば直る。


Q:実行時エラー'75' パス名が無効です。
A1:OPEN filename For Input As #3 で、filenameがスペースだった

A2:ファイルがない時発生する。

A3:サーバーファイルの時で、ネットワークが繋がっていない時発生する。

A4:暗号化パソコンで、ファイルを単純コピーした時は、認識されない。

A5:ファイル作成時より、低い権限でファイルを上書きした。
  アドミニ権限でファイルを作成し、そのファイルを一般権限で上書きしようとしてエラーになった。
  このような場合、Explorerで手で削除しても、削除できない。

A6:ファイルの中身が空だった。

A7:コピーしたままだったので、ファイルの番号を直し忘れた。
誤  wwOutput1 = "\\ABC001\ABC\直送.txt"  *コピーのまま。

正  wwOutput2 = "\\ABC001\ABC\直送.txt"  *wwOutput2が正しい。



Q:実行時エラー'76' パスが見つかりません。
A1:コピー元のフォルダーが消えていた。


Q:実行時エラー'91' オブジェクト変数またはwithブロック変数が設定されていません。
A1:txt氏名 変数がない  パンチミス

A2:Recordset記入もれ:Set rs1 = New ADODB.Recordset

A3:Recordsetを2回した:Set rs1 = New ADODB.Recordset

A4:rsの記入誤り:rs2!氏名 ではなく rs1!氏名 であった。

A5:cn1をClose後、rs1.Open "社員", cn1, adOpenStatic, adLockOptimistic を実行した

A6:メインとサブPGが同じcn1で、サブでcn1をCloseした。(Closeを2回行った)

A7:DataEnvironment使用で、Set cna1 = New ADODB.Connection を記入していた

A8:rs1.RecordCountでrs1がOpenされてない、又Closeされた。

A9:CommonDialogでキャンセルした時発生した。
 rs1.Closeの場所
 −−>キャンセルの時OPENは飛ばしたが、CLOSEは飛ばさなかった CLOSEを迂回する

A10:OPENしていなくて、CLOSEした時、このエラーがでます。

 DBのOPEN処理がエラーで飛ばされて、終了処理(CLOSE)を行ったため、このエラーが出た。


A11:Closeを2回実行した。
'終了
rs5a.Close         ここで発生
Set rs5a = Nothing

正解:rs5a.Closeが別な場所で実行されていた。

!!ヒント
初期のPGテストでは「終了処理」でこのエラーが出て、PGが終了できなくなる事がありますが、
この時は
WindowsXPの場合、「Ctrl+ALT+DEL」-->タスクマネージャ-->選択-->タスクの終了でVBを終了できます。



Q:実行時エラー'94' NULLの使い方が不正です。
A1:WK=AAA で AAAがNullの時 でる

A2:RDBの項目にNullが入っていた-->NullのときはSPACE(1)を転送する。

DB登録の初期値は""(NULL)では無く、文字はSPACE(1)、数字は0、DATEはEmptyを転送する。



Q:実行時エラー'339' コンポーネント'MSDATLST'、またはその依存関係のひとつが適切に
登録されていません。ファイルが存在しないか、あるいは不正です。

A1:VBのランタイムが登録されていません。
新しいパソコンの時によく出る

A2:Windows7でVB6を配布した時、よく発生する。
アンインストールして、再インストールしたら、直った。
何故か原因不明 結構、再インストールを数回すれば治ります。

ディストリビューション ウィザードで作成したSETUPを実行する
それでもダメな時は、フリーソフトのランタイムも入れてみる。

○VisualBasic60SP6ランタイムファイル\vb6rtest\setup.exe

○VisualBasic60SP6ランタイムライブラリ\vb6sp6rt4\setup.exe

Windows7でVB6を配布した時、よく発生する。
アンインストールして、再インストールしたら、直った。


A3:ファイルがある時は、再登録を行う
C:\Windows\system32\msdatlst.ocx

現象
Windows7のPCにVB6をインストールした。
管理者権限では正常だが、ユーザー権限で実行するとこのエラーが出た。

対処
スタート
「プログラムとファイルの検索」の場所に「cmd」
黒いDOS画面になる
>_の位置に以下を入力

●登録の解除
「regsvr32 /u msdatlst.ocx」

表示:「msdatlst.ocx.ocx」のDllUnregisterServerは成功しました。

●再登録
「regsvr32 msdatlst.ocx」

表示:「msdatlst.ocx」のDllRegisterServerは成功しました。

●「exit」で抜ける

PC再立ち上げ
ユーザー権限で実行



Q:実行時エラー'364' 既にアンロードされています。
A1:メインからサブの実行でサブでCloseしていた。
A2:このメッセージは他の処理で異常終了したため、ここに飛んできてエラーが出ている。
   DBにNullが入っていたためエラーになり、他に飛んでこのメッセージになった。


Q:実行時エラー'380' プロパティの値が不正です。
A1:
' コンボボックスを初期化
   With Combo1
    .ListIndex = 0     ここで発生
   End With

正常に動いているコンボボックスとプロパティは同じでもエラー発生した??
ツールボックスから貼り付けたコンボボックスはエラーになる。??
正常に動いているコンボボックスをコピーしたら正常に動く
これは「原因不明」で調査中

A2:日付に範囲外のデータを転送した。

  dtp発注日 = "0000/00/00"   これはエラー
  dtp発注日 = "9999/99/99"   これはエラー
  dtp発注日 = "1111/01/01"   これはエラー
  dtp発注日 = "9999/01/01"   これはOK


Q:実行時エラー'545' フィールドまたはデータメンバーに連結できません'入社日'
A1:DBが0件の時発生-->そのまま


Q:実行時エラー'713' 次のクラスは登録されていません。
以下のファイルをインストールして下さい MSSTDFMT.DLL

現象
Windows7のPCにVB6をインストールした。
管理者権限では正常だが、ユーザー権限で実行するとこのエラーが出た。

対処
スタート
「プログラムとファイルの検索」の場所に
「regsvr32 C:\Windows\system32\MSSTDFMT.DLL」
表示:"success" 成功
PC再立ち上げ
ユーザー権限で実行



Q:実行時エラー'2455' 指定した式にVisibleプロパティに 対する正しくない参照が含まれます。

現象
Windows7のPCにVB6をインストールした。

対処
Access2010を一度も起動していなかった

Access2010を起動して、再度処理したらこのエラーは出なくなった



Q:実行時エラー'3001' 引数が間違った型、または許容範囲外であるか、競合しています。
A1:Findで複数条件を指定した-->Findは使用せずFilterを使用する。
  rs1.Filter = "([家族数] = '0') or ([性別区分] = '1') or (エラー区分 = '4')"
  
A2:A AND B AND (C OR D)はダメ 
  正 (A AND B AND C)OR(A AND B AND D)とする

A3:変数は'" & 変数 & "' でくくる
  rs1.Filter = "[社員番号] = '" & str入力 & "'"


Q:実行時エラー'3021' BOFとEOFのいずれかTRUEになっていか、または現在のレコードが削除されています。
A1:DBが0件の時発生する。-->ifで迂回する

A2:DBが0件でrs1.MoveFirstを実行していた。
       If rs1a.EOF = True Or _
         rs1a.RecordCount = 0 Then
       Else
         rs1a.MoveFirst
       End If
 
A3:DBが0件で、lbl名称=rs1![氏名]を行ったため発生
A4:誤rs3.AddNew-->正rs1.AddNew  レコードセットのパンチミス
A5:Filterの次にFirstを実行したが、Filterで0件になってしまった。
A6:Filterの抽出キーが間違っていた。


Q:実行時エラー'3051' ファイル"\xxx\yyy.mdb"を開くことが出来ませんでした
A1:ほかのユーザーによって排他的に開かれている。
A2:データを見る権限がありません−−−>DBが読取専用になっている。


Q:実行時エラー'3078'  入力テーブルまたはクエリ'車種'が見当たりませんでした。 そのテーブルやクエリが存在していること、または名前が正しいことを確認して下さい。
STsql = "[車種]![出荷日] between datevalue('" & dtp出荷日開始.Value & "') and datevalue('" & dtp出荷日終了.Value & "')"
objAccess.DoCmd.OpenReport "R01配車表", acViewNormal, "Q01配車表", STsql '印刷

A1: テーブルが作成してなかった
A2: リンクテーブルを削除した
A3: テーブル名が違っていた


Q:実行時エラー'3201' VALUEメソッドは失敗しました。'Field'オブジェクト
A1:rs1![社員]が読まれていない。
A2:RowColChangeからSelChangeに変更。


Q:実行時エラー'3219' このコンテキストで操作は許可されていません
A1:ドロップダウンが表示されたままでClose終了した
A2:DatagridでクリックしたままCloseした-->Close時に他の行にいかせる。


Q:実行時エラー'3251' オブジェクトまたはプロバイダは要求された操作を実行できません。
A1:更新PGで読み取り専用になっていた。
A2:ロックの種類:1-読み取り専用---->3-オプティミスティック


Q:実行時エラー'3265' 要求された名前または序数に対応する項目がコレクションで見つかりません。
A1:DB項目と名前が違う

A2:DB項目のパンチミス

A3:rs1!AAAでrs1がsetされていない

A4:フィルターで使用した項目がなかった

A5:不明な時は、削除して再入力すると直る時がある。

A6:DBが古く、項目追加したDBではなかった。

A7:[発注日]がSELECT文に入っていなかった。

Set rs4a = New ADODB.Recordset
wwSQL4 = "SELECT [受注].[発注NO],[受注].[商品コード],[受注].[旧商品コード] FROM [受注]" & _
  " WHERE [受注].[完了区分] = '0'" & _
  " ORDER BY [受注].[商品コード]"
rs4a.Open wwSQL4, cna1, adOpenStatic, adLockOptimistic
lbl発注日 = rs4a![発注日]  ←ここでエラーが発生した。

[発注日]がSELECT文に入っていなかった

正解
メモリー節訳時
 wwSQL4 = "SELECT [受注].[発注NO],[受注].[発注日],[受注].[商品コード],[受注].[旧商品コード] FROM [受注]" & _
又は
まあ、普通は以下で良い
 wwSQL4 = "SELECT [受注].* FROM [受注]" & _


Q:実行時エラー'35773' MinDateプロパティとMaxDateプロパティの範囲にない日付が指定されました。
A1:日付に範囲外のデータを転送した。

  dtp発注日 = "1111/01/01"   これはエラー
  dtp発注日 = "9999/01/01"   これはOK

*日付の初期値*
 dtp発注日開始 = "2000/01/01"   最低日を入れる
 dtp発注日終了 = "9999/01/01"   最高日を入れる

 dtp発注日 = Format(Date,"yyyy/mm/dd")   処理日を入れる


Q:実行時エラー'3704' オブシエクトが閉じている場合は操作は許可されません
A1:ACCESSのデザインが開いていた

A2:別フォームでCloseしていた 

A3:rs1.openをしていなかった
  'rs1a.Open "出荷", cna1, adOpenStatic, adLockReadOnly  注釈になっていた。

A4:Execute文の時、rs1a.Closeは不要だった
   Set rs1a = New ADODB.Recordset
   strSQL1 = "UPDATE 出荷 SET 区分 = '1' Where (出荷.区分 <> '1')"
   cna1.Execute strSQL1
   'rs1a.Close <---不要
   Set rs1a = Nothing



Q:実行時エラー'3705' オブシエクトがひらいている場合は操作は許可されません
A1:>CLOSEしていなくてOPENした時発生する
A2:前PGが×で閉じて、CLOSEしていない。
A3:OPENしてあるのにOPENした
A4:CLOSEもしくは Set rs1 = New ADODB.Recordset これを入れたら直った


Q:実行時エラー'3709' 閉じている、または無効な接続を参照するオブジェクトの操作は許可されていません。
A1:cn1が前処理でCLOSEされている
  cn1がOpenされていない時に発生する

A2:ロジックの記入もれ
cna1.Close ここで発生した
Set cna1 = Nothing

正解 以下のロジックがもれていた。
Set cna1 = New ADODB.Connection
cna1.ConnectionString = DBSOURCE
cna1.Open


Q:実行時エラー'6145' 列のインデックスが不正です。
A1:Colが1つしかないのに、Colを3つ入れた。


Q:実行時エラー'6148' 不正な行番号です。。
A1:DataGridの最後の行に+1した時発生した。
   最後の行の時は+1しなくて、先頭行にした。
A2:データが0件の時、DataGrid1.Row=0をした−−>0件の時、処理を迂回する。

Q:実行時エラー'6160' データアクセスエラーです。
A1:DBが0件の時発生-->0件チェックを入れる

  If rs4a.EOF = True Or _
    rs4a.RecordCount = 0 Then
    '受注なしの処理
  Else
    '受注ありの処理
  End If

A2:合計の加算で最後にRowColに行ったためエラー-->SelChangeにする

A3:DBが0件で、lbl名称=DataGrid1.Colums(3).Textを行ったため発生


Q:実行時エラー'7005' 行セットが使用できません。
A1:DataGrid1でBmark=DataGrid1.BookMark  ??不明


Q:実行時エラー'7008' 現在の行は使用できません。
A1:DataGrid1.Colums(9).text="AAA"


Q:実行時エラー'7009' 行が見つかりません。
A1:DataGridで行を選択していない


Q:実行時エラー'7866' Q:実行時エラー'7866' データベースファイルがないか、他のユーザーが排他モードで開いているため、このデータベースを開くことができません。
A1:
A現象
EXEとDBはDドライブだったがEXEのみサーバーに移行した時発生した。
Dドライブの時は正常に動いていたが、サーバーでは別の世界になりChDirがきかなかった。

エラー前
D:\abc\aaa.exe
Public Const CDBSSS = "\bbb.mdb"
ChDir "d:\abc"
objAccess.OpenCurrentDatabase CurDir & CDBSSS

EXEの場所を変更したらエラーになった
aaa.exeをサーバー\\DDD001\aaa.exeに変更した。

対策
ChDirではなく直接指定にした。
Public Const CDBSSS = "d:\abc\bbb.mdb"
objAccess.OpenCurrentDatabase CDBSSS

A2:
B現象
標準配車表の出力で自分のパソコンでは正常に出力するが、ユーザーのパソコンから出力するとこのエラーメッセージになる。
ACCESSのクエリー、リストをVBから出力している。

対策


Q:Windows7でVB6を実行した時の、実行エラーの対応方法

A1:再インストールを繰り返す
原因不明だが、アンインストールして、再インストールを2〜3回繰り返すと直る時がある。

A2:フリーソフトのランタイムも処理する。

○VisualBasic60SP6ランタイムファイル\vb6rtest\setup.exe

○VisualBasic60SP6ランタイムライブラリ\vb6sp6rt4\setup.exe

A3:exeファイルをXP互換モードにする。
管理者権限で処理する。

zaiko.exe右 プロパティ 「互換性」タブ 
「すべてのユーザーの設定を変更」
互換モードでこのプログラムを実行する。OK OK

*ほとんどこれで解消されるが、
欠点は、互換モードはexeファイルをコピーするとクリヤーされる。
従って、サーバーにexeファイルは置けない


A4:ディストリビューションの作成でプロパティに互換設定をする。

管理人はまだ確認していませんが、このような方法もあるという事で 記入しました。

----------------------------
スタート
すべてのプログラム
Microsoft Visual Studio6.0
Microsoft Visual Studio6.0 ツール
ディストリビューション ウィザード 右クリック
プロパティ
互換性
「すべてのユーザーの設定を変更」
■互換モードでこのプログラムを実行する
OK
----------------------------




 
■ VBエラー


Q:表示窓や枠がいつもより異常に長くなっている。
A1:メモリー不足。
   全てのPGを閉じて、パソコンを再立上げする。
   画面プロパテイのパフォーマンスが10%以下になると出やすくなる。
   EXCELなどマルチであまりPGを立ち上げないこと。

Q:コーデングの赤文字が消えない。
A1:継続 _ の次に注釈はダメ
ans = MsgBox("表示のレコードを削除します" & Chr(13) & _ !!ここに'を入れるとダメ "  OK?", vbYesNo + vbQuestion, "削除")


Q:PGが無限ループした。

A1:SetFocusの連鎖、Sub、Functionの呼び合い
A2:Clickイベントで同じ対象のコントロールの値を変化するとイベントの連鎖が発生する。
  ・Check1.Value=1はしない方が良い。オプションボタンを使用する。

  ・ClickイベントでDataGridなど同じ自分の項目をいじると、
   またClickイベントが発生して無限ループとなる

   どうしても処理を入れたい時は判定を入れる
    更新処理の中で再度、Clickイベントが発生している時は
    更新処理を一回しか通らないようにする。
    −−Clickイベント−−
     If DataGrid1.Columns(5).Text <> dcb車種   Then
       DataGrid1.Columns(5).Text = dcb車種
       更新処理
     End If



Q:Filterで日本語がヒットしない
A1:TrimでSpaceをとる

   strW入力 = Trim([txt入力])
   rs1.Filter = "部署 like '" & strW入力 & "*'"

Q:フィールドまたはデータメンバーに連結できません'入社日'
A1:DBにデータがない
A2:SELECTでデータが抽出されなかった。


Q:DB最適化 このデータベースはマシン'XXXXX'のユーザーAdminが排他的に開いています。 データベースが使用可能になった時点で再度実行してください。
A1:cn1がOpenされていた-->Close後 最適化を行う。
A2:最適化処理の前にLabel="開始"を入れたら排他になった。-->実行されるとダメ?
A3:DataEnvironment使用で他PGを実行後、最適化すると排他になる。(cn1がOpenのまま?)
   -->最適化はメニュー立上直後に行う。


Q:Filterで2度読みされた。重複データが発生した。

A1:Filterの抽出キーを変更した。

   Filterの抽出キーは変更してはいけない
   rs1.Filter = "電話番号 = '" & g1入力TELS & "'"
   g1入力TELS=111111111111  <−−ここで抽出キーを変更
   rs1.Update
    のとき重複デ゛ータが発生する。
    
 *Filterを使用せずSQLで抽出する。



Q:TEXTをMultiline指定で入力したら、表示が..のゴミ表示になった。

A1:改行CRLF??  そのままにする



Q:テーブル又規則を見つけることができません。

A1:テーブルが削除されている。



Q:DataGridが表示しない ACCESS95は表示するがACCESS2000では表示しない。

A1:CursorLocationをadUseClientにすると表示する。
A2:技術評論社の[Visual Basic 6による実践データベースプログラミング]で ACCESS2000で処理するとDataGridが表示しない現象が起きた。
−−>
rs1a.CursorLocation = adUseClient  OPENの前にこの処理を入れる
rs1.Open mySQL1, cna1, adOpenStatic, adLockOptimistic




Q:DataGridで項目を追加すると、実行時に見出しが消える。

A1:今のところ原因不明。
SPLIT0,1の複数画面を使用しているときに発生する。
SPLIT0,1を使用している時は充分注意が必要。SAVEして修正する事、戻れるようにしておく。
どうしてもの時は、最初から画面を作り直した方が早い。

*DataGridの場合、画面が崩れたら、深みにはまる前に、DataGridを削除して、新規に作成した方が早い。



Q:DB転送のタイミング 
A1:プロパテイ(右下の枠内のみの定義)のみのときはrs1.updateをしないと rs1.aaaはNullになっている    


Q:FormLoadが実行されてしまう 

 FormLoadはプログラムの起動時に実行されるが、バグが発生したのでステップインで1ステップ事に流れを確認すると、途中でFormLoadが実行され、また元の所に戻ってくる。

A1:別のプログラムコードを指定していた。
プログラムをコピーして作成したので、コピー元のプログラムコードが修正されずそのまま残っていた。

*****誤*****     *****正*****
strAAA = laaa200.txt月度.Text  strAAA = txt月度.Text
FormLoadが実行される       strBBB = strAAA
strBBB = strAAA

*laaa200が別プログラム



 
■ その他エラー


Q:ファイルまたはフォルダの削除エラー。
XXXXを削除できません。アクセスできません。
ディスクがいっぱいでないか、書き込み禁止になっていないか、またはファイルが使用中でないか確認して下さい。

A1:ファイル作成時より、低い権限でファイルを変更しようとした。
  アドミニ権限でファイルを作成し、そのファイルを一般権限で変更しようとしてエラーになった。
  単純に権限がない。



Q:パソコンを変えたら解像度は同じなのに画面サイズが小さくなった。
画面のDPI設定が異なっているとこのような現象が発生します。
ディスクトップ右クリック--プロパティ--設定--詳細設定--DPI設定--通常のサイズ(96DPI)

大きなサイズ(120DPI)から通常のサイズ(96DPI)に変えると画面が小さくなります。
したがって、ここは通常のサイズ(96DPI)にしておいた方が良い



Q:序数313がダイナミックライブラリ iertutil.dllから見つかりませんでした。
VBセットアップでエラー

原因
IE8のPCでVBのディストリビューションを作成して、IE7のPCでVBのインストールを行うとこのエラーが出た。

IE8で作成したランタイムを、IE7で実行するとエラーになり、InternetExplorerが動かなくなる。

PCの影響
このエラーが出たので、インストールを中止したが、インターネットが見れなくなった
管理者IDではインターネットは正常だが、ユーザーIDだとブラウザの枠だけ出て、中が白紙のままでなにも表示 しなくなった。

何かの関連ファイルの権限が管理者のみになったみたい。

ちなみにIE8パソコンとIE7パソコンではiertutil.dllの容量が違っていた。
IE8パソコン:1939k
IE7パソコン: 262k
このあたりが原因の一因かもしれない。

------------------------------------------------------
対応:IE8をIE7に戻す。
------------------------------------------------------

1.IE8を削除してIE7にする
IE8を削除すると自動的にIE7になる。(WindowsXP)
結果、InternetExplorerはまだ動かない。

2.IE7をインストールする(上書き)
IE7-WindowsXp-x86-jpn.exe

結果、InternetExplorerはまだ動かない。

3.IE7を削除してIE7をインストールする
IE7の削除は「プログラムの追加と削除」にIE7は表示されていないので、以下の方法でIE7を削除する。

(1) IE7の削除
 a. [スタート] ボタンをクリックし、[ファイル名を指定して実行] をクリック
 b. [名前]に「%windir%\ie7\spuninst\spuninst.exe」と入力し、[OK] をクリック
 c.ウィザードの指示に従って Internet Explorer 7 をアンインストール

(2) IE7インストール
IE7-WindowsXp-x86-jpn.exe

結果、InternetExplorerは正常に動いた

------------------------------------------------------

IE7にした所でIE7のランタイムでVBをインストール

インストールは正常終了した。


VBを実行すると
管理者IDでは正常だが、ユーザーIDだとエラーになった。

実行時エラー 339
コンポーネント'MSCOMCT2.OCX'、またはその依存関係のひとつが適切に登録されていません。
ファイルが存在しないか、あるすは不正です。

このエラーはVBのランタイムが入っていないPCで実行するとこのエラーが出る
ということは、権限がかかって、ユーザーIDでは読みとれないと言う事か?

------------------------------------------------------
対応:OCXを削除して、ランタイムを再インストールする。
------------------------------------------------------

MSCOMCT2.OCXのファイルとレジストリーを削除して、ランタイムを削除して、再インストールする。

(1)MSCOMCT2.OCXのファイル削除
c:\WINDOWS\system32\MSCOMCT2.OCX

(2)MSCOMCT2.OCXのレジストリー削除

c:\WINDOWS\system32>regsvr32 /u MSCOMCT2.OCX

MSCOMCT2.OCXのDllUnregisterServerは成功しました

(3)ランタイムの削除
「プログラムの追加と削除」で削除

(4)ランタイムの登録

結果、VBは正常に動いた。
------------------------------------------------------
と喜んだが、別PGで実行エラーが出た

DBはACCESSを使っているので、DBの修復保存処理で以下のエラーが出た

エラー:「70 書込みできません。」

Set objJroJetEngine = New JRO.JetEngine 'ここで70書込みできませんが発生した。
JRO.JetEngine 70 書込みできません

JRO.JetEngineはACCESS再編成なので、ACCESSを直接再編成してみたがこれは問題なし。

------------------------------------------------------

結論

結局、「70 書込みできません。」が出<たので、場所が分からず、システムを復元して対応した。(なんのこっちゃ!!トホホ)

ほとんど役立たずでお粗末な結果になってしまいました。



 
このページTOPへ
デバッグヒント集 .        ACCESSエラー対処 

SEプログラマー・ヒント集メニューへ

Copyright © 2006-2013 s-kitagawa vberr