VBScript Scripting Techniques > User Interaction > File Open Dialog

File Open Dialog

 

UserAccounts.CommonDialog
VBScript Code:
WScript.Echo "Selected file: " & GetFileName( "C:\", "" )
WScript.Echo "Selected file: " & GetFileName( "", "Text files|*.txt" )
WScript.Echo "Selected file: " & GetFileName( "", "MS Office documents|*.doc;*.xls;*.pps" )
WScript.Echo "Selected file: " & GetFileName( "C:\WINDOWS", "Bitmaps|*.bmp" )

Function GetFileName( myDir, myFilter )
' This function opens a File Open Dialog and returns the
' fully qualified path of the selected file as a string.
'
' Arguments:
' myDir is the initial directory; if no directory is
' specified "My Documents" is used;
' NOTE: this default requires the WScript.Shell
' object, and works only in WSH, not in HTAs!
' myFilter is the file type filter; format "File type description|*.ext"
' ALL arguments MUST get A value (use "" for defaults), OR otherwise you must
' use "On Error Resume Next" to prevent error messages.
'
' Dependencies:
' Requires NUSRMGRLib (nusrmgr.cpl), available in Windows XP and later.
' To use the default "My Documents" WScript.Shell is used, which isn't
' available in HTAs.
'
' Written by Rob van der Woude
' http://www.robvanderwoude.com

    ' Standard housekeeping
    Dim objDialog

    ' Create a dialog object
    Set objDialog = CreateObject( "UserAccounts.CommonDialog" )

    ' Check arguments and use defaults when necessary
    If myDir = "" Then
        ' Default initial folder is "My Documents"
        objDialog.InitialDir = CreateObject( "WScript.Shell" ).SpecialFolders( "MyDocuments" )
    Else
        ' Use the specified initial folder
        objDialog.InitialDir = myDir
    End If
    If myFilter = "" Then
        ' Default file filter is "All files"
        objDialog.Filter = "All files|*.*"
    Else
        ' Use the specified file filter
        objDialog.Filter = myFilter
    End If

    ' Open the dialog and return the selected file name
    If objDialog.ShowOpen Then
        GetFileName = objDialog.FileName
    Else
        GetFileName = ""
    End If
End Function
Requirements:
Windows version: Windows XP, Server 2003 or Vista
Network: N/A
Client software: N/A
Script Engine: any (WSH if using default for directory)
Additional options: objDialog.Filter = "MS Office files|*.doc;*.xls;*.pps|Text files|*.txt|All files|*.*"
objDialog.FilterIndex = 1 'MS Office files
objDialog.FilterIndex = 2 'Text files
objDialog.FilterIndex = 3 'All files

objDialog.Flags = 1 'Check "Open file as read-only" checkbox in dialog
objDialog.Flags = 0 'Restore default read-write mode
Summarized: Works in Windows XP or later.
If used in HTAs, the initial directory must be specified.
Doesn't work in Windows 95, 98, ME, NT 4, or 2000.
 
File Open dialog (UserAccounts.CommonDialog)
 
[Back to the top of this page]
 
SAFRCFileDlg.FileOpen
VBScript Code:
Set objDialog = CreateObject( "SAFRCFileDlg.FileOpen" )

' Note: The dialog will be opened without any file name or
'       type filter, and in the "current" directory, e.g. as
'       remembered from the last "SAFRCFileDlg.FileOpen" or
'       "SAFRCFileDlg.FileSave" dialog!
If objDialog.OpenFileOpenDlg Then
    WScript.Echo "objDialog.FileName = " & objDialog.FileName
End If
Requirements:
Windows version: Windows XP
Network: N/A
Client software: N/A
Script Engine: any
Summarized: Works in all Windows XP versions.
Doesn't work in Windows 95, 98, ME, NT 4, and 2000, not sure about Windows Server 2003 or Vista.
 
File Open dialog (UserAccounts.CommonDialog)
 
[Back to the top of this page]