2016-08-29 9 views
4

Environのような機能を見つけようとしていますが、私のビジネスの主なドライブが特定のPC上のどのドライブにマップされているかを見つけようとしています。メインドライブに割り当てられた手紙を検索

"G:\ Eworking \ SET \ Operations \ file"というファイルパスを使用しています。私のPCはGドライブ内にあるようにマップされていますが、別のものがマップされている可能性がありますです。

私はアルファベットを通り、前にif Dir([filepath]) thenを実行しているif elseメソッドを試しましたが(下記参照)、これを行う良い方法があるかどうか疑問に思っていましたか?

Sub LoopThroughDrives() 
sFilePath As String 

sFilePath = ":\Eworking\SET\Operations\file" 

If Dir("A" & sFilePath) > 0 Then 
    msgbox ("It's in drive A") 
    Else 
     If Dir("B" & sFilePath) > 0 Then 
      msgbox ("It's in drive B") 
      Else 
       If Dir("C" & sFilePath) > 0 Then 
        msgbox ("It's in drive C") 
        Else 
         '........................... 
         'All other letters of the alphabet, checking each possibility 
         '........................... 
       End If 
     End If 
End If 

End Sub 
+1

はhttps://technet.microsoft.com/en-us/library/ee198705.aspxまたはhttpsを参照してください:// awrcorp .com/download/faq/english/scripts/basic_file_opperation.aspx FileSystemObjectを使用してドライブを列挙する方法について –

+4

UNCパスの使用に問題はありますか? – Comintern

+2

あなたのコードがうまくいけば、私はあなたがそれを(すべてのもの!)[codereview.se]に載せることを提案します - "コードは機能しますが、私の目は飛び出したい"というメッセージは、 ! –

答えて

5

A ... ASCII文字を使用する次のループが適切であるようです。

dim c as integer 
for c = 65 to 90 
    If CBool(Len(Dir(Chr(c) & sFilePath))) Then 
     msgbox "It's in drive " & Chr(c) '<~~msgbox, not magbox 
     exit for 
    end if 
next c 
if c > 90 then msgbox "never found" 
+0

このようなものは、私が持っていたものよりはるかに優れていますが、それを受け入れるはずのドライブ(ドライブG)と "見つからなかった"メッセージボックスに行く - 何か考えている理由? – Jeremy

+0

@Jeremy - ** file **がフォルダで、ファイルではない場合は、[Dir関数](https://msdn.microsoft.com/en-us/library/office/)のvbDirectoryパラメータを使用する必要があります。 gg278779.aspx)。例えばその後、 ' – Jeeped

+0

ファイルパスに「\」がありませんでしたので、フォルダとして認識しませんでした(ルーキーミス!) - これは、 – Jeremy

7

次のようにドライブ文字とパスを取得することができます:

For Each d In CreateObject("Scripting.FileSystemObject").Drives 
    Debug.Print d.DriveLetter, d.Path, d.ShareName 
Next 
+4

++のおかげで、ドライブを繰り返し処理する方がずっといいです(アルファベットを繰り返しているのと比べて)...ループ本体はOPの 'sFilePath'を使うべきでしょう。 –

+1

質問とコメントを読む前に私は答えました。コメントの中のTimのリンクには良い例があり、マップされたドライブ文字の代わりに完全なマップされたパスを使う方が良いと思います。 – Slai

関連する問題