Es que no he probado el codigo. Te sobra una comparacion y no habiamos cargado Respuesta con el camino al fichero.
Esto si funciona:
Código vb:
Ver originalPrivate Sub Command1_Click()
Static Respuesta As String ' creamos una variable que no se pierde
' NOTA; esta variable la deberias hacer global y cargarla con el contenido
' del fichero rutaapp.txt antes de entrar en esta sub.
' de todas formas asi sirve.
'Verificar si existe
' si la variable no se ha cargado la cargamos
If Respuesta = "" Then Respuesta = "C:\Program Files\KONAMI\Pro Evolution Soccer 6\PES6.exe"
' y si no es valida pedimos la nueva ruta
If Dir(Respuesta, vbArchive) = vbNullString Then
CommonDialog1.Filter = "Archivos Ejecutables (*.exe)|*.exe"
CommonDialog1.ShowOpen
'si el usuario selecciona cancelar que salga del sub
If CommonDialog1.FileName = "" Then Exit Sub
Respuesta = CommonDialog1.FileName
' Y ESTO SOLO SE GUARDA AQUI, SI LO GUARDAS DONDE ESTABA
' SE GUARDA SIEMPRE AUNQUE LA RUTA QUE CONTIENE YA SEA VALIDA
Open "C:\RutaApp.txt" For Output As #1
Print #1, CommonDialog1.FileName
Close #1
'Si selecciona un ejecutable que lo abra
Shell CommonDialog1.FileName, vbNormalFocus
Else
'En caso de que en la comprobación si exista el ejecutable que lo abra.
Shell Respuesta, vbNormalFocus
End If
Me.WindowState = 1
End Sub
De todas formas tendras que cargar con el contenido del fichero RutaApp la variable Respuesta (cambiale el nombre) al comienzo de la sub o al arrancar el programa porque si no te lo va a preguntar siempre que lo ejecutes.
Saludos