VBScript or HP ALM APIs do not offer a class or method for getting a file path from a user.
Therefore we have to use a workaround, which consists in using a different application to display a file picker dialog to a user.
A very simple solution would be to provide a user with an InputBox, which is unsatisfactory for me. Also users have to type or copy a path correctly, which they are sometimes not capable of.
I choose to automate Microsoft Excel to display a file picker dialog to a user.
Source Code
This method uses the function GetOpenFileName of the Excel.Application object, which displays a file picker to a user.
' @Author - Alexander Bolte
' @ChangeDate - 2014-12-18
' @Description - Prompts a file picker dialog to user
' and returns the file path to picked file.
' @Param myDir - a Srting providing a path to a start directory to choose files from.
' @Param myFilter - a filter String for filtering only files of specific file types.
' @Param title - a caption for the displayed file picker dialog.
' @Returns - an empty String, if user aborts file selection.
' Automates following applications:
' Microsoft Excel - using file picker dialog from Excel,
' since VBScript does not provide one.
Function GetFilePath(myDir, myFilter, title) ' As String
Dim xlApp ' As Excel.Application
Dim ret ' As String
Dim shell ' As WScript.Shell
On Error Resume Next
Set shell = createObject("WScript.Shell")
Set xlApp = createObject("Excel.Application")
xlApp.visible = True
If myFilter = "" Then
myFilter = "All Files (*.*), *.*"
End If
shell.AppActivate "Microsoft Excel"
ret = xlApp.GetOpenFilename(myFilter, , title)
If ret = False Then
ret = ""
End If
If Err.Number <> 0 Then
MsgBox Err.Description
Err.Clear
End If
' Close extra instance of Excel and set Application object to null
' to avoid "Raiders of lost reference".
xlApp.Quit
Set xlApp = Nothing
Set shell = Nothing
GetFilePath = ret
On Error GoTo 0
End Function
The object called shell is of type WScript.Shell and is used to ensure that the application Excel is displayed in font of all other currently open application windows.
This way a user sees that the tool is requesting him to open an Excel file. Thus the bold lines are not essential for this code to work as expected but it will be a lot more user friendly.
Referenced API
Referenced APIs are as follows.
- WScript.Shell
- Excel.Application