How to check drive exist or not using FileSystemObject

  • Thread starter Thread starter moonhk
  • Start date Start date
M

moonhk

Dear Reader


How to check drive exist or not using FileSystemObject ?

Private Sub cmdSelectName_Click()
Dim myFileName As Variant
Dim FileObj As New FileSystemObject
Dim loDriver As String
Dim loFolder As String
Dim loFilename As String
On Error Resume Next
loDriver = VBA.Trim(VBA.Left(txtfilename.Value, 2))
'~~ Check Drive exist of not

'~~ Change Drive
VBA.ChDrive (loDriver)
loFilename = FileObj.GetFileName(txtfilename.Value) '~~ Return
file name
If VBA.InStr(1, txtfilename.Value, loFilename, vbTextCompare) > 0
Then
loFolder = VBA.Left(txtfilename, VBA.InStr(1,
txtfilename.Value, loFilename, vbTextCompare) - 2)
End If

If FileObj.FolderExists(loFolder) Then
VBA.ChDir (loFolder)
End If
On Error GoTo 0
myFileName = Application.GetOpenFilename(filefilter:="Prn Files,
*.PRN", _
Title:="Pick a File")

If myFileName = False Then
'~~ MsgBox "Ok, try later" '~~user select cancel
Exit Sub
Else
txtfilename.Value = myFileName
End If
End Sub
 
Just use VBA and error trapping
loDriver = Left(txtfilename.Value, 1)

On Error Resume Next
ChDrive loDriver

If Err.Number > 0 Then
MsgBox "Drive """ & loDriver & """ not available"
Exit Sub
Else
On Error GoTo 0
'Continue
End If

NickHK
 
Any other suggestion ?

Just use VBA and error trapping
loDriver = Left(txtfilename.Value, 1)

On Error Resume Next
ChDrive loDriver

If Err.Number > 0 Then
MsgBox "Drive """ & loDriver & """ not available"
Exit Sub
Else
On Error GoTo 0
'Continue
End If

NickHK
 
From the Scripting Runtime v5.6 help file...

Function ReportDriveStatus(drv)
Dim fso, msg
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.DriveExists(drv) Then
msg = ("Drive " & UCase(drv) & " exists.")
Else
msg = ("Drive " & UCase(drv) & " doesn't exist.")
End If
ReportDriveStatus = msg
End Function
--
Jim Cone
San Francisco, USA
http://www.realezsites.com/bus/primitivesoftware


"moonhk" <[email protected]>
wrote in message
Any other suggestion ?
 
You could do with a a variety of API calls, but the simplest way is to try
to ChDrive to the drive in question and test for an error:

Dim SaveDir As String
SaveDir = CurDir ' save CurDir to restore defaults
On Error Resume Next
ChDrive "Z:\" ' test for drive 'Z'
If Err.Number <> 0 Then
Debug.Print "Drive does not exist"
Else
Debug.Print "Drive exists."
End If
ChDrive SaveDir
ChDir SaveDir



--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
(email address is on the web site)
 
How to check drive exist or not using FileSystemObject ?

This idea uses the "DriveExists" method.

Function FileExistsQ(sFilePath As String) As Boolean
With CreateObject("Scripting.FileSystemObject")
FileExistsQ = .DriveExists(.GetDriveName(sFilePath))
End With
End Function

Sub TestIt()
Debug.Print FileExistsQ("C:\Windows")
Debug.Print FileExistsQ("A:\Windows")
Debug.Print FileExistsQ("D:\")
End Sub

Note the following when testing something like an A: Drive:
'A' might exist, but it is not "Ready" because it lacks a Disk.
You may want to include an "IsReady" to make sure it has a Disk.
 
How to check drive exist ...

Ahhh! I'd like to change the name of that function.

Function DriveExistsQ(sFilePath As String) As Boolean
With CreateObject("Scripting.FileSystemObject")
DriveExistsQ = .DriveExists(.GetDriveName(sFilePath))
End With
End Function
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Back
Top