Gracias por tu consejo!
No lo he probado, pero seguro que funciona. Al final lo he conseguido hacer de la siguiente forma: 
Public 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 
    ShellExecute hwnd, "Open", ProgramName, vbNullString, vbNullString, SW_NORMAL 
Aún y todo parece más sencillo lo que tú dices, así que también lo probaré.