Start a document based on its filename

Starting any document file based on its file name only is very simple in Windows using the ShellExecute function. This tip shows how simple it is - you only really need one declare and one line of code!

Start a new project in VB. Add a Command button to the project's form, then add the following code:

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" ( _
        ByVal hWnd As Long, _
        ByVal lpOperation As String, 
        ByVal lpFile As String, _
        ByVal lpParameters As String, _
        ByVal lpDirectory As String, _
        ByVal nShowCmd As Long) As Long 

Private Sub Command1_Click() 
Dim lR As Long 
Dim sFile As String 
Dim iFile As Integer 

    ' Create a text file to test: 
    sFile = App.Path & "\SHELLTST.TXT" 
    On Error Resume Next 
    Kill sFile 
    On Error GoTo 0 
    iFile = FreeFile 
    Open sFile For Binary Access Write As #iFile 
    Put #iFile, , _
         "This is a text file used for testing the ShellExecute API function." 
    Close #iFile 

    ' Start the text file using its filename. Windows will 
    ' check what exe is associated with .TXT files (by default 
    ' this is Notepad) and start the application with the file 
    ' opened: 
    lR = ShellExecute(Me.hWnd, "Open", sFile, "", "", vbNormalFocus) 
    If (lR < 0) Or (lR > 32) Then 
        ' success 
    Else 
        MsgBox "Failed to start '" & sFile & "'", vbInformation 
    End If 
End Sub 

When you click the command button, the app will create a small text file in the project's path, and then open it with the default application (normally Notepad).