VBScript Scripting Techniques > User Interaction > 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 |
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|*.*" |
Summarized: | Works in Windows XP only. If used in HTAs, the initial directory must be specified. Doesn't work in any other Windows version. |
[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, Server 2003 |
Network: | N/A |
Client software: | N/A |
Script Engine: | any |
Summarized: | Works in all Windows XP versions and in Server 2003. Doesn't work in Windows 95, 98, ME, NT 4, 2000 or 7, not sure about Vista. |
[Back to the top of this page] | |
InternetExplorer.Application | |
VBScript Code: | |
Option Explicit WScript.Echo "Selected file: " & ChooseFile( ) Function ChooseFile( ) ' Select File dialog based on a script by Mayayana ' Known issues: ' * Tree view always opens Desktop folder ' * In Win7/IE8 only the file NAME is returned correctly, the path returned will always be C:\fakepath\ ' * If a shortcut to a file is selected, the name of that FILE will be returned, not the shortcut's On Error Resume Next Dim objIE, strSelected ChooseFile = "" Set objIE = CreateObject( "InternetExplorer.Application" ) objIE.visible = False objIE.Navigate( "about:blank" ) Do Until objIE.ReadyState = 4 Loop objIE.Document.Write "<HTML><BODY><INPUT ID=""FileSelect"" NAME=""FileSelect"" TYPE=""file""><BODY></HTML>" With objIE.Document.all.FileSelect .focus .click strSelected = .value End With objIE.Quit Set objIE = Nothing ChooseFile = strSelected End Function |
|
Requirements: | |
Windows version: | any |
Network: | N/A |
Client software: | Internet Explorer |
Script Engine: | any |
Summarized: | Works in all Windows versions. |
[Back to the top of this page] | |
WScript.Shell.Exec MSHTA | |
VBScript Code: | |
Option Explicit Dim strFile strFile = SelectFile( ) If strFile = "" Then WScript.Echo "No file selected." Else WScript.Echo """" & strFile & """" End If Function SelectFile( ) ' File Browser via HTA ' Author: Rudi Degrande, modifications by Denis St-Pierre and Rob van der Woude ' Features: Works in Windows Vista and up (Should also work in XP). ' Fairly fast. ' All native code/controls (No 3rd party DLL/ XP DLL). ' Caveats: Cannot define default starting folder. ' Uses last folder used with MSHTA.EXE stored in Binary in [HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\ComDlg32]. ' Dialog title says "Choose file to upload". ' Source: https://social.technet.microsoft.com/Forums/scriptcenter/en-US/a3b358e8-15ae-4ba3-bca5-ec349df65ef6/windows7-vbscript-open-file-dialog-box-fakepath?forum=ITCG Dim objExec, strMSHTA, wshShell SelectFile = "" ' For use in HTAs as well as "plain" VBScript: strMSHTA = "mshta.exe ""about:" & "<" & "input type=file id=FILE>" _ & "<" & "script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _ & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);" & "<" & "/script>""" ' For use in "plain" VBScript only: ' strMSHTA = "mshta.exe ""about:<input type=file id=FILE>" _ ' & "<script>FILE.click();new ActiveXObject('Scripting.FileSystemObject')" _ ' & ".GetStandardStream(1).WriteLine(FILE.value);close();resizeTo(0,0);</script>""" Set wshShell = CreateObject( "WScript.Shell" ) Set objExec = wshShell.Exec( strMSHTA ) SelectFile = objExec.StdOut.ReadLine( ) Set objExec = Nothing Set wshShell = Nothing End Function |
|
Requirements: | |
Windows version: | Windows XP and later versions |
Network: | N/A |
Client software: | MSHTA.EXE (native in Windows) |
Script Engine: | any |
Summarized: | Works in Windows XP, Vista, Windows 7, Windows 8, Windows 8.1. |
[Back to the top of this page] |
page last modified: 2016-09-19; loaded in 0.0020 seconds