Checking for the Existence of a Folder

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!
 
M

Melanie Breden

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)
 
B

Bob Phillips

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)
 
D

Dave Peterson

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
 
Top