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é.