Using MSComDlg.CommonDialog to make a Directory Browser in VBScript


I am having a problem with VBScript and the common dialog (MSComDlg.CommonDialog).
What I am trying to do is build a dialog that allows me to select a target
directory. I am trying to copy this functionality from the Microsoft Word 2003
Dialog where a user can change the default path for documents. Tools - Options -
File Locations - Documents - Modify. I know about the function  Shell.Application
- BrowseForFolder but it does look as good as the Office Dialog I want to simulate.

So really in the code below I want to make it only browse directories and
remove the file filter (Files of type:) - how can this be done. As well
I want to make it only display directories and not list any files.

Enough waffle - here is the code.



Public Const ofnAllowMultiSelect = &H200
Public Const ofnCreatePrompt = &H2000
Public Const ofnFileMustExist = &H1000
Public Const ofnHideReadOnly = &H4
Public Const ofnNoNetworkButton = &H20000
Public Const ofnNoReadOnlyReturn = &H8000
Public Const ofnNoTestfileCreate = &H10000
Public Const ofnNoValidate = &H100
Public Const ofnOverwritePrompt = &H2
Public Const ofnPathMustExist = &H800
Public Const ofnReadOnly = &H1
Public Const ofnShareAware = &H4000
Public Const ofnExplorer = &H80000
Public Const ofnNochangedir = &H8

Dim oComDlg
Dim path_name
Set oComDlg = CreateObject("MSComDlg.CommonDialog")

path_name = ""
With oComDlg
            .DialogTitle = "Please select Target Directory"
            .InitDir = "C:\"
            .Filter = ""
            .FilterIndex = 0
            .MaxFileSize = 260
            .FileName = "*.*"
            .Flags = ofnPathMustExist Or ofnHideReadOnly Or ofnExplorer Or ofnNoValidate Or ofnNochangedir
End With                        
path_name = Left(oComDlg.filename,InStrRev(oComDlg.filename,"\"))

If path_name = "" Then
      MsgBox "User Chose Cancel"
      wscript.quit 0
End If
msgbox "Path Name" & path_name

Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Unfortunately, the Common Dialog component *cannot* be used to browse for folders.


  Nayer Naguib
whorsfallAuthor Commented:

Thanks for your answer. How is it Microsoft are able to do this with Office 2003 - it looks like a common dialog to me. If you try it you can see they can achieve the result - try changing any of the File locations win Word 2003 and you will see what I mean.


The dialog that appears when you use Microsoft Office 2003 is *not* the MS Common Dialog. I think MS Office applications inherit from the Common Dialog component, and add some extra functionality. If you take a closer look at the dialog box that appears when you want to modify file locations in Word 2003, you will see a "Back" button that stores the browsing history, a "Search the Web" button, and a "Tools" drop down menu.


  Nayer Naguib
Take a look at the following discussions:

The first says that you cannot select folders using the Common Dialog, and the second says that the MS Office 2003 dialog boxes are subclassed from the Common Dialog.


  Nayer Naguib

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.