• ベストアンサー

Accessでのファイルコピーについて

質問させていただきます。 Access97を使用しております。 あるデータMDBをMOへコピーする(フォームからボタンを押したときに目的のMDBがコピーされる)ようにしたのですが、MOの装着を確認できるようにするにはどうすればよいでしょうか? ・MOが正しく装着されていればコピー開始 ・MOが装着されていなければ装着を促すメッセージを 表示(MOが装着されるまでコピーされない。または    キャンセルする) 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.4

> ディスクの有無に関わらず、「実行時エラー:71 ディスクが準備されていません」 > となります。 「有無に関わらず」というのはちょっと変ですが、ドライブ名を実際のに直してますよね。 2ヶ所ですが・・・。 あと、ちょっと勘違いしていました。媒体のセット確認ですよね。HDと同じに考えていました。 次のように直してみてください。 Private Sub コマンド0_Click() Dim Res As Integer On Error Resume Next Do While Dir("F:") = ""   If Err.Number <> 0 Then     Res = MsgBox("MOの準備が出来ていません" & vbCrLf & vbCrLf & _       "準備が出来たら[OK]を押してください。", _       vbOKCancel + vbExclamation, "MO準備確認")     If Res = vbCancel Then Exit Sub   End If   Err.Number = 0 Loop FileCopy "C:\test\test.mdb", "F:\bak\test.mdb" If Err.Number <> 0 Then   MsgBox "ファイルが存在しないか、使用中です。コピー出来ません。", vbCritical   Exit Sub Else MsgBox "ファイルをMOにコピーしました。" End If End Sub

aikun
質問者

お礼

早速のご連絡ありがとうございます。 目的のものができました。 大変ありがとうございました。

その他の回答 (3)

  • ja7awu
  • ベストアンサー率62% (292/464)
回答No.3

例えば、こんな感じで如何でしょうか。 MOのドライブを F: として、既に F:\bak のフォルダがあるものとします。 但し、現在開いているファイルはコピーできません。(メッセージが出ます。) Private Sub コマンド0_Click() Dim Res As Integer Do While Dir("F:") = ""   Res = MsgBox("MOの準備が出来ていません" & vbCrLf & vbCrLf & _       "準備が出来たら[OK]を押してください。", _       vbOKCancel + vbExclamation, "MO準備確認")   If Res = vbCancel Then Exit Sub Loop On Error Resume Next FileCopy "C:\test\test.mdb", "F:\bak\test.mdb" If Err.Number <> 0 Then   MsgBox "ファイルが存在しないか、使用中です。コピー出来ません。", vbCritical   Exit Sub Else   MsgBox "ファイルをMOにコピーしました。" End If End Sub

aikun
質問者

補足

回答ありがとうございます。 試してみたのですがディスクの有無に関わらず、 「実行時エラー:71 ディスクが準備されていません」となります。 引き続きいろいろと試してみます。

  • yoko3333
  • ベストアンサー率35% (47/134)
回答No.2

API関数ですが・・・。 空耳工房 http://www.bea.hi-ho.ne.jp/my2project/ こちらのサイトで「VB」-「システム環境取得設定関連」-「ディスクが挿入されているかを調べる」というのがあります。 私はFDのチェックしかやったことがないのですが、たぶんMOでもOKじゃないでしょうか。 もしくは、チェックせずにいきなりコピー処理を実行して、エラー内容で拾うことも可能です。 (ただし、こちらもFDの場合です。MOでは違うかも・・・。) Private Sub コピー処理() On Error GoTo Err_コピー処理 'コピー処理 Exit_コピー処理: Exit Sub Err_コピー処理: Beep If Err.Number = 70 Then MsgBox "このディスクはライトプロテクトされています。ライトプロテクトを解除するか、別のディスクを挿入してください。", vbExclamation, "エラー" ElseIf Err.Number = 71 Then MsgBox "ディスクを挿入してください。", vbExclamation, "エラー" ElseIf Err.Number = 76 Then MsgBox "設定ファイルに無効なディレクトリが指定されています。", vbExclamation, "エラー" Else MsgBox Error$ End If Resume Exit_コピー処理 End Sub

aikun
質問者

お礼

早速の回答ありがとうございます。 参考にさせていただきます。

  • gatyan
  • ベストアンサー率41% (160/385)
回答No.1

a$=dir("x:\*.*") を実行してエラーにならなかったら入っているってことになりませんか? x:は、MOのドライブ名で。 (テストしてません)

aikun
質問者

お礼

早速の回答ありがとうございます。 参考にさせていただきます。

関連するQ&A