Checking for the Existence of a Folder

  • Thread starter Thread starter Viswanath Tumu
  • Start date Start date
V

Viswanath Tumu

I need to check the folder "c:\program files\microsoft
office" to see if a folder that is inside this folder is
named office or office10 (or office something depending
on the version of office that is installed on a PC) and
run code based on the name of the folder. I have been
attempting to use the dir function as follows: zx=dir
("c:\program files\microsoft office\office*") but this
only returns a zero string, even though a folder
beginining with the work office is in there. What code
would I need to use to check for the existence of a
folder whose name always contains office but could
contain other characters as well? Thanks!
 
Hi Viswanath Tumu,

Viswanath said:
I need to check the folder "c:\program files\microsoft
office" to see if a folder that is inside this folder is
named office or office10 (or office something depending
on the version of office that is installed on a PC) and
run code based on the name of the folder. I have been
attempting to use the dir function as follows: zx=dir
("c:\program files\microsoft office\office*") but this
only returns a zero string, even though a folder
beginining with the work office is in there. What code
would I need to use to check for the existence of a
folder whose name always contains office but could
contain other characters as well? Thanks!

try this:

Sub FileDir()
Dim strPath As String
Dim zx As String
Dim objFSO As Object
Dim objSubFolder As Object

strPath = "c:\program files\microsoft office\"
Set objFSO = CreateObject("Scripting.FileSystemObject")

If Dir(strPath & "Office*", vbDirectory) <> "" Then
For Each objSubFolder In objFSO.GetFolder(strPath).SubFolders
If InStr(objSubFolder.Name, "Office") Then
zx = objSubFolder.Name
Exit For
End If
Next objSubFolder

MsgBox zx
End If
End Sub

Another idea is to have a look at the Version from the Application:

Sub AppVersion()
Dim zx As String
zx = "Office" & IIf(Val(Application.Version) > 9, _
" " & Val(Application.Version), "")
End Sub


--
Regards

Melanie Breden
- Microsoft MVP für Excel -

http://excel.codebooks.de (Das Excel-VBA Codebook)
 
Hi Viswanath,

Here is a simple function to do it

Function FolderExists(Folder) As Boolean
Dim sFolder As String
On Error Resume Next
sFolder = Dir(Folder, vbDirectory)
If sFolder <> "" Then
If (GetAttr(sFolder) And vbDirectory) = vbDirectory Then
FolderExists = True
End If
End If
End Function

use like

Debug.Print FolderExists("c:\program files\microsoft office")

or even

Debug.Print FolderExists("c:\program files\* office")

--

HTH

Bob Phillips
... looking out across Poole Harbour to the Purbecks
(remove nothere from the email address if mailing direct)
 
One more!

Option Explicit
Function FolderExists2(FolderName As String) As Boolean

Dim TestStr As String

If Right(FolderName, 1) <> "\" Then
FolderName = FolderName & "\"
End If

TestStr = ""
On Error Resume Next
TestStr = Dir(FolderName & "nul")
On Error GoTo 0

FolderExists2 = CBool(TestStr <> "")

End Function

Sub testme()
MsgBox FolderExists2("c:\my documents\excel\test")
MsgBox FolderExists2("C:\my xxxx\test\")
End Sub
 
Back
Top