Skip to content

Instantly share code, notes, and snippets.

@mockmyberet
Created May 8, 2012 18:50
Show Gist options
  • Save mockmyberet/2638448 to your computer and use it in GitHub Desktop.
Save mockmyberet/2638448 to your computer and use it in GitHub Desktop.
New function to replace open file dialog by building an HTA
Function ChooseFile( )
Dim objFSO, objShell, objTempFolder, strTempFileName, strFullTempFileName, objOpenFile, objTextFile, strTempTextFileName
Const TemporaryFolder = 2
Const ForReading = 1
strTempFileName = "OpenFile.hta"
strTempTextFileName = "OpenFile.txt"
Set objFSO= CreateObject("Scripting.FileSystemObject")
Set objTempFolder = objFSO.GetSpecialFolder(TemporaryFolder)
strFullTempFileName=objTempFolder.Path & "\" & strTempFileName
Set objOpenFile = objFSO.CreateTextFile(strFullTempFileName,True)
objOpenFile.writeline("<html><head><meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1252"">")
objOpenFile.writeline("<title>Open File</title>")
objOpenFile.writeline("<script language=""vbscript"">")
objOpenFile.writeline("Sub Window_Onload")
objOpenFile.writeline("FileName.click")
objOpenFile.writeline("WriteFile FileName.value")
objOpenFile.writeline("Self.Close()")
objOpenFile.writeline("End Sub")
objOpenFile.writeline("Sub WriteFile(strFileName)")
objOpenFile.writeline("Dim objFSO, objTempFolder, strTempFileName, strFullTempFileName, objOpenFile")
objOpenFile.writeline("Const TemporaryFolder = 2")
objOpenFile.writeline("strTempFileName = ""OpenFile.txt""")
objOpenFile.writeline("Set objFSO=CreateObject(""Scripting.FileSystemObject"")")
objOpenFile.writeline("Set objTempFolder = objFSO.GetSpecialFolder(TemporaryFolder)")
objOpenFile.writeline("strFullTempFileName=objTempFolder.Path & ""\"" & strTempFileName")
objOpenFile.writeline("Set objOpenFile = objFSO.CreateTextFile(strFullTempFileName,True)")
objOpenFile.writeline("objOpenFile.writeline(strFileName)")
objOpenFile.writeline("objOpenFile.Close")
objOpenFile.writeline("Set objFSO=Nothing")
objOpenFile.writeline("Set objTempFolder=Nothing")
objOpenFile.writeline("Set objSleepFile=Nothing")
objOpenFile.writeline("Set objShell=Nothing")
objOpenFile.writeline("End Sub")
objOpenFile.writeline("</script>")
objOpenFile.writeline("<hta:application applicationname=""Open File"" border=""dialog"" borderstyle=""normal"" caption=""Open File"" contextmenu=""no"" maximizebutton=""no"" minimizebutton=""no"" navigable=""no"" scroll=""no"" selection=""no"" showintaskbar=""no"" singleinstance=""yes"" sysmenu=""no"" version=""1.0"" windowstate=""minimize"">")
objOpenFile.writeline("</head>")
objOpenFile.writeline("<body>")
objOpenFile.writeline("<input Application=""True"" type=""file"" id=""FileName"" />")
objOpenFile.writeline("</body>")
objOpenFile.writeline("</html>")
objOpenFile.Close
Set objShell = CreateObject("WScript.Shell")
objShell.Run "mshta.exe " & strFullTempFileName,0,True
objFSO.DeleteFile strFullTempFileName, True
Set objShell=Nothing
Set objOpenFile=Nothing
strFullTempFileName = objTempFolder.Path & "\" & strTempTextFileName
Set objTextFile=objFSO.OpenTextFile(strFullTempFileName, ForReading)
ChooseFile = objTextFile.ReadLine
objTextFile.Close
objFSO.DeleteFile strFullTempFileName, True
Set objTextFile=Nothing
Set objFSO=Nothing
Set objTempFolder=Nothing
End Function
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment