Solved

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

Posted on 2008-10-12
2
996 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:Christopher Schene
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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:Christopher Schene
ID: 22698569
thanks for the fast response....it works well!
0

Featured Post

Creating Instructional Tutorials  

For Any Use & On Any Platform

Contextual Guidance at the moment of need helps your employees/users adopt software o& achieve even the most complex tasks instantly. Boost knowledge retention, software adoption & employee engagement with easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

This article describes some techniques which will make your VBA or Visual Basic Classic code easier to understand and maintain, whether by you, your replacement, or another Experts-Exchange expert.
When we want to run, execute or repeat a statement multiple times, a loop is necessary. This article covers the two types of loops in Python: the while loop and the for loop.
The viewer will learn how to implement Singleton Design Pattern in Java.
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…

621 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