How do I browse to and choose a directory in VBscript using a File dialog?

Posted on 2008-10-12
Last Modified: 2008-10-12
I have the following code attached that will browse and choose a file in VBscript.

Instead of choosing a file, I want to choose a directory: How do  I do that?

Function  doFileOpenDialog() 

  Dim oCDlg 

  Dim sTmp 

  Set oCDlg = CreateObject( "MSComDlg.CommonDialog" ) 

  If oCDlg Is Nothing Then 

     MsgBox "CreateObject( 'MSComDlg.CommonDialog' ) failed." 

     Exit Sub 

  End If 

  oCDlg.MaxFileSize = 10000 

  oCDlg.DialogTitle = "Choose directory"

' Setting other oCDlg.Properties 

' oCDlg.Filter      = ... 

' ... 


  doFileOpenDialog = oCDlg.Filename  ' FSpec 

End Sub

Open in new window

Question by:cschene

Accepted Solution

DrunkenELF earned 250 total points
ID: 22698337
Dear Cschene,

C he attached Code snippet using the shell dialog box to select a folder

Option Explicit

' Flags for the options parameter

Const BIF_returnonlyfsdirs   = &H0001

Const BIF_dontgobelowdomain  = &H0002

Const BIF_statustext         = &H0004

Const BIF_returnfsancestors  = &H0008

Const BIF_editbox            = &H0010

Const BIF_validate           = &H0020

Const BIF_browseforcomputer  = &H1000

Const BIF_browseforprinter   = &H2000

Const BIF_browseincludefiles = &H4000

Dim wsh, objDlg, objF

' Get Application object of the Windows shell.

Set objDlg = WScript.CreateObject("Shell.Application")

' Use the BrowseForFolder method.

' For instance: Set objF = objDlg.BrowseForFolder _

'     (&H0, "Select the folder to copy", &H10, "C:\Born")

Set objF = objDlg.BrowseForFolder (&H0, _

    "Select the folder to copy", _

    BIF_editbox + BIF_returnonlyfsdirs)

' Here we use the first method to detect the result.

If IsValue(objF) Then 

    MsgBox "Selected folder: " & objF.Title


    MsgBox "Canceled"

End If

' Here we use TypeName to detect the result.

If InStr(1, TypeName(objF), "Folder") > 0 Then

    MsgBox "Selected folder: " & objF.Title


    MsgBox "Canceled"

End If

Function IsValue(obj)

    ' Check whether the value has been returned.

    Dim tmp

    On Error Resume Next

    tmp = " " & obj

    If Err <> 0 Then

        IsValue = False


        IsValue = True

    End If

    On Error GoTo 0

End Function

'*** End

Open in new window


Author Comment

ID: 22698569
thanks for the fast works well!

Featured Post

Enabling OSINT in Activity Based Intelligence

Activity based intelligence (ABI) requires access to all available sources of data. Recorded Future allows analysts to observe structured data on the open, deep, and dark web.

Join & Write a Comment

Windows Script Host (WSH) has been part of Windows since Windows NT4. Windows Script Host provides architecture for building dynamic scripts that consist of a core object model, scripting hosts, and scripting engines. The key components of Window…
How to remove superseded packages in windows w60 or w61 installation media (.wim) or online system to prevent unnecessary space. w60 means Windows Vista or Windows Server 2008. w61 means Windows 7 or Windows Server 2008 R2. There are various …
The goal of the video will be to teach the user the difference and consequence of passing data by value vs passing data by reference in C++. An example of passing data by value as well as an example of passing data by reference will be be given. Bot…
The viewer will learn how to use the return statement in functions in C++. The video will also teach the user how to pass data to a function and have the function return data back for further processing.

758 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now