[[20171016091632]] 『Eドライブも「フォルダーは存在しません」にしたax(勉強中) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『Eドライブも「フォルダーは存在しません」にしたい』(勉強中)

お世話になります。
再度質問します。フォルダーが無ければ次のドライブに移り探すコードを作っています。
個々の環境によりますが多くの場合EドライブはCDと思います。
下のコードなのですが、実行時エラーを出さないようにしたいのですがどうしたらよいのでしょうか。

Sub フォルダーの有無を調べる_Dir関数にて()

    フォルダーパス = "E:\EXCEL"                      '※1
    If Dir(フォルダーパス, vbDirectory) <> "" Then '※2
        MsgBox フォルダーパス & " フォルダーは存在します。", , "すぐマク"
    Else
        MsgBox フォルダーパス & " フォルダーは存在しません。", , "すぐマク"
    End If
End Sub

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 先ず、ドライブの有無の判定をしては?
(カリーニン) 2017/10/16(月) 11:13

動作確認できない環境なのですが、こんな感じでいかがでしょうか?
    With CreateObject("Scripting.FileSystemObject")
        If .DriveExists("E:") = False Then
            MsgBox "ドライブが存在しません", vbCritical
            Exit Sub
        End If
        If .GetDrive("E").IsReady = False Then
            MsgBox "メディア挿入されていません", vbCritical
            Exit Sub
        End If
    End With
(???) 2017/10/16(月) 11:31

カリーニンさん
はい、最初にそう思い調べると以下のコードにたどり着きました。
Sub ドライブの有無を調べる()
    ドライブ = "E"                              '※4
    With CreateObject("Scripting.FileSystemObject")
        If .DriveExists(ドライブ) Then
            MsgBox ドライブ & "ドライブは有ります。"
        Else
            MsgBox ドライブ & "ドライブは有りません。"
        End If
    End With
End Sub
Eドライブは存在しますから「ドライブは有ります」となります。
2017/10/12(木)にお尋ねした
http://www.excel.studio-kazu.jp/kw/20171011140903.html
そのドライブにフォンダーが無ければ次のドライブを探したいのですが。。。
(勉強中) 2017/10/16(月) 11:41

私の答えは無視されているようですが、最終的になにがやりたいのかを説明してください。

CDについて言及するということは、CD-ROM内にある特定フォルダの下にあるブックを開きたい、という事でしょうか?
そして、Eドライブ固定でコーディングしたけれど、人によってはEドライブがCDではない場合があるので、Fドライブ、Gドライブ…と変えていけばよいだろう、という事ですか?

つまりは、CDの使えるドライブはどれかを知りたい、という事でしょうか? ドライブレターなんて好きに変更できますし、Zドライブかも知れませんよ? または、HDDが1つだけならば、DドライブがCD-ROMかも? Eドライブから加算で、本当に良いのですか?

そして、ドライブレターを得る事ができたとして、もしドライブが2つあり、2つ目のCD-ROMにディスク挿入していたらどうするのでしょうか?

FSOとかAPIを探せば答えにたどり着けると思いますが、そんな難しい事をしなくても、Excelなのだし、どこかのセルにCD-ROMドライブのドライブレターを入力しておいて、それを使うだけで済んだりしませんか?
(???) 2017/10/16(月) 13:00


???さん
すみません。無視はしていません、仕事を言いつけられて手がすきませんでした。
 そして、Eドライブ固定でコーディングしたけれど、人によってはEドライブがCDではない場合があるので、  Fドライブ、Gドライブ…と変えていけばよいだろう、という事ですか?

仰る通りです。社員に一人ひとりが保存するドライブが違っているのと環境が違うからです。
C、Dドライブのみなら簡単だったのですがUSBに入れている人もいますからEドライブで引っかかってしまいFドライブに飛んで行かなくって困っていました。
読んでいてHDDがCしかなかったらこれも同じ現象が出ますね。
こんな時は皆さんはどの様に回避するのでしょうか。
(勉強中) 2017/10/16(月) 15:20


ドライブ不定の対応方法は最後に書いた通り、ドライブをセルに入力させてしまう事です。更には、ドライブだけ分けずに、いっそフルパスで入力させると、ネットワークドライブでも対応できて便利ですよ。 エラーだったら、フルパスを自分の環境に合わせて直させるだけです。

自分では使いこなせない難しい命令で不完全なものを作るより、簡単に使えて汎用性も高い方法があるのだから、迷う必要もないかと思いますが?
(???) 2017/10/16(月) 15:44


???さん
ご心配いただきありがとうございます。
自宅に持ち帰り調べました。
この On Error Resume Next 記述を入れると引っかからずに動きました。
ありがとうございました。

(勉強中) 2017/10/17(火) 09:07


On Error Resume Next は最初に思いつきましたが、これは想定外のエラーでも止まらなくなってしまうので、お薦めしたくなかったのですよ。 On Error に頼らないコーディングをすべきなのです。(エラーになる原因を、先に調べて判定してしまえば良い)

せめて、ドライブにアクセスした後に On Error Goto 0 を入れてエラートラップを解除し、他のコードへの影響が無いようにしてください。
(???) 2017/10/17(火) 09:30


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.