• 締切済み

ディスクが挿入されていない時のエラー処理について

WIndows2000(sp2) VB6.0(sp) で開発中です。 if Dir$(Dir_Name, vbDirectory + vbNormal) <> "" Then ~ と、ディスクの状態を調べた時、ディスクが入っていないと、 次のようなメッセージボックスが表示されます。 「vb6.exe-ディスクがありません。  ドライブにディスクがありません。ディスクをドライブA:に挿入してください。  キャンセル,再実行,続行」 このメッセージが表示された後に、OnErrorの処理に入ります。 このメッセージを表示せず、直接OnErrorの処理に入るには どうしたらよいのでしょうか? ご存知でしたら教えてください。 よろしくお願いします。

noname#5252
noname#5252

みんなの回答

noname#11856
noname#11856
回答No.2

VBAからのオプション画面の全般タブで エラートラップが『エラー発生時に中断』になっている、とか?

noname#102878
noname#102878
回答No.1

どこに On Error を入れているのか書いてくれるとありがたいです。 Sub Test  On Error GoTo FDErr  If Dir$("A:\hoge\", vbDirectory + vbNormal) <> "" Then   MsgBox "入ってる"  End If  Exit Sub FDErr:  MsgBox "入ってない" End Sub これでちゃんとFDErrに飛びましたけど。 FileSystemObjectを使って簡単に調べるとすれば以下のようになります。 この場合は On Error の処理と言うわけではなく、「ドライブの準備ができているか」を調べる形になります。 準備ができていない場合のコードを書き足せばOKでしょか。 Sub test1()  Dim fso As Object  Dim myDrive As Object  Set fso = CreateObject("Scripting.FileSystemObject")  Set myDrive = fso.GetDrive("A:\")  If myDrive.DriveType = 1 Then   If myDrive.IsReady = True Then    MsgBox "ドライブの準備ができている"   Else    MsgBox "ドライブの準備ができていない"   End If  End If  Set myDrive = Nothing  Set fso = Nothing End Sub DriveType = 1 というのはリムーバブルディスク or CD-ROMドライブの場合です。 詳しくはMSDNライブラリをご覧ください。 http://www.microsoft.com/japan/msdn/library/ja/script56/html/jsproisready.asp VB6ならMSDNライブラリのCDもついてるよね。

参考URL:
http://www.microsoft.com/japan/msdn/library/ja/script56/html/jsproisready.asp
noname#5252
質問者

補足

ご回答ありがとうございます。 On Errorは例に書いてくださったのと同じ位置に入っていますが、 3択のメッセージボックスが表示された後じゃないと、エラー処理 に飛びません。 環境がおかしいのでしょうか? 実は、以前自分で作った時点では、そんなメッセージは出ずに、 きちんとエラー処理に飛んでいたのですが、別の人が手を加えて から出るようになったようなのです・・・ しかし、出そうとしているわけではなく、Vb6.exeが勝手に出し てしまうというのが解せないのです。

関連するQ&A

  • このエラーはどこが悪いのでしょうか?

    WindowsXP を使っています。 今日パソコンを起動しようとしたら、以下のエラーメッセージが表示されました。 7C0 qttask.exe ディスクがありません。 ドライブにディスクがありません ディスクをドライブ ¥Device\HardDisk1\DR4 挿入してください というダイアログボックスが表示され キャンセル 再試行 続行という3つのボタンが表示されています。 これはハードディスクが壊れてしまっているのでしょうか?

  • エラーメッセージ(ディスクをドライブ\Device\Harddisk1\DR2に挿入してください)

    よろしくお願いします。 OSは WinXP Pro SP2 です。 普通にOSを起動して「Spybot1.3」「Ad-Aware SE 1.05」でスキャンすると正常にスキャンできるのですが セーフモードでスキャンすると どちらとも下記のようなメッセージが繰り返しでます。 ------------------------------------------------- ディスクがありません × ドライブにディスクがありません。ディスクをドライブ \Device\Harddisk1\DR2 に挿入してください。 ------------------------------------------------- キャンセルボタンや 続行ボタンをクリックしても このメッセージが繰り返し出てきます。 アンインストール後に 再インストールしても解決しません。 Ad-Aware 6.0 のときには セーフモードでも正常にスキャンできていました。 他のアプリケーションは全く問題なく動作しています。   SP1のときからのエラーメッセージですので SP2が原因ではないと思います。 なにが原因かわかりません。 よろしくお願いします。

  • ドライブにディスクがありません。というエラーメッセージ

    WindowsXpの起動時にドライブにディスクがありません。ディスクをドライブ\Devicd\Harddisk\DR3に挿入してください。 というエラーメッセージが出ます。 エラーのタイトルは"71c:qttask.exe"となっています。 キャンセルと再実行と続行があり、どれを押してもパソコンは動くのですが、すごく気になります。もしかしてウィルスでしょうか? もし、システムの復元で直るなら直したいのですが、最近保存したファイルはなくなりませんか?

  • 「ドライブにディスクがありません」というエラーメッセージ

    過去に似たようなQ&Aはあったのですが、ちょっと異なるので新規に質問させていただきます。 使用環境は WindowsXP Pro SP1 ハードディスクはデスクトップ機に内蔵2台、 外付けUSB2で1台です。 ソフトの「PowerDVD」を立ち上げると 「ドライブにディスクがありません。ディスクをドライブ¥Device¥Harddisk3¥DR6に挿入してください。」 というメッセージが出ます。 選択肢は「キャンセル」「再実行」「続行」です。 上記のメッセージが出ながら一応ソフトは立ち上がるのですが選択肢のいずれを選んでも、3~4回ほど 再メッセージが表示されてしまいます。 他のソフトではこういうメッセージが出なかったのですが、先日Quicktime Playerを立ち上げたところ同様の症状が出ました。 解決法があればお願いします。

  • exe書き込み時のエラーについて。

    コンパイルは問題なく終了すのですが、exeの書き込み中に 「このコンポーネントのライセンス情報が見つかりません。デザイン環境でこの機能を使う為のライセンスがありません。」のメッセージが表示されexeが作成できません。 VB5の時はこのようメッセージが表示される事があるみたいですが私の使ってる環境はVB6のSP5でこのような事例を調べたのですが見つかりませんでした。すいませんが分かる方がおられましたらお教え下さい。お願い致します。

  • ドライブにディスクがありません。ディスクをドライブ A: に挿入してください。

    VB6.0でフロッピーディスクにファイルを保存するプログラムを作りました。 フロッピーディスクを挿入したままプログラムを終わらせた場合は いいのですが、抜いてから終了させると、上記のようなメッセージが 表示されてしまいます。 デバッグモードで処理をブレイクするとプログラムが終了してしまうので、 いったい何処で処理が止まっているのかも分かりません。 フロッピーディスクへのアクセスは、 CommonDialogの .showsave メソッドを使用しています。 どのタイミングで上記メッセージが出ているのか、 出さないようにするのはどうしたらいいのか、 ご教授お願い申し上げます。

  • エラーメッセージが頻繁に出てきて困っております

    エラーメッセージが頻繁に出てきて困っております メッセージタイトル GoogleQuickSearchBox.exe - ディスクが有りません メッセージ内容 ドライブにディスクが有りません。ディスクをドライブ¥Device¥Harddisk1¥DR1に挿入してください。 この画面にキャンセル、再実行、続行の3つのボタンが有るのですが何故か画面を消すには同じボタンを3回をさないと画面が消えなく困っております 3つのうちどれかを3回クリックすると一旦消えるのですがまた直ぐに出てきます 宜しくお願いします

  • RealPlayer ディスクがありません?

    RealPlayer10 で動画ファイルを再生し、ウインドを終了させると、下記のメッセージが出てきます。Realを再インストールしましたが、まだ出ます。 このメッセージを消したいのですが、どうすればいいのでしょうか。 ---------------------メッセージ-------------------------------- RealPlay.exe-ディスクがありません ドライブにディスクがありません。ディスクをドライブ\Device\Harddisk4\DR8に挿入してください。 -------------------------------------------------------------- キャンセル、再実行、続行の選択で再実行以外で選択すると消えます。 windows2000でCD/DVDドライブx1 HDD(IDE)x3 外付けSCSIでDiskx1です。

  • エラー時に処理を戻したい。

    VB2005環境です。 ボタンをクリックした時、条件によってエラーを出し、処理を ボタンが押される前に戻すようなプログラムを作りたいと思っています。 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Try Dim test As Integer test = 5 If test > 1 Then Throw New IndexOutOfRangeException("エラー") Else MsgBox("エラーではない") End If Catch aex As IndexOutOfRangeException MsgBox(aex.Message) End Try End Sub 例えば上のようにした場合は、もうボタンが押された後にメッセージを 表示するだけになってしまいます。 例えば、テキストボックスにフォーカスした時に戻すとか、フォームロードの 状態に戻すとかいうことをしたいのですが…。 処理を戻す方法を教えていただけないでしょうか?

  • 処理速度向上のための小さな努力

    VB6+sp6で開発しています。 最近、変数宣言でInteger型よりもLong型の方が処理が早いとか If Trim$(strHoge) = vbNullString then の比較よりも If Len(Trim$(strHoge)) = 0 then の方が早いと教えてもらいました。 実際は何万回も処理が走った時に数秒の差が出る程度だということなのですが ほんとに処理速度向上に効果あるのでしょうか? それと共にこんな小さなコードの書き方の違いで 処理効率が良くなったりする方法が他にもあるのか気になりました。 現場でよく使われているようなポピュラーな手法があったら是非教えてくださいm(_ _)m

専門家に質問してみよう