Solved

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

Posted on 2008-10-12
2
976 Views
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      = ... 

' ... 
 

  oCDlg.ShowOpen 
 

  doFileOpenDialog = oCDlg.Filename  ' FSpec 
 

End Sub

Open in new window

0
Comment
Question by:cschene
2 Comments
 
LVL 3

Accepted Solution

by:
DrunkenELF earned 250 total points
ID: 22698337
Dear Cschene,

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

Cheers,
D-ELF
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

Else

    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

Else

    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

    Else

        IsValue = True

    End If

    On Error GoTo 0

End Function
 

'*** End

Open in new window

0
 

Author Comment

by:cschene
ID: 22698569
thanks for the fast response....it works well!
0

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