Проблема с вашей командой оболочки заключается в том, что приглашение cmd не всегда поддерживает использование расширения файла для запуска программы.На самом деле, вам лучше использовать
Start "путь к какому-либо файлу с расширением .extension"
Вышеприведенное во многом похоже на щелчок.
Однако, что вы действительно хотите сделать, это запустить msacces.exe и предоставить имя пути к файлу, чтобы открыть его.Это особенно актуально при установке во время выполнения.
Таким образом, ваш код должен выглядеть следующим образом:
Sub testjump()
' jumps to a mde file called "upgrade.mde"
' it exists in the same directly as the currently running program
Dim strShellProg As String
Dim strCurrentDir As String
Const q As String = """"
strCurrentDir = CurrentProject.path & "\"
' path to msaccess is required here
strShellProg = q & SysCmd(acSysCmdAccessDir) & "msaccess.exe" & q
strShellProg = strShellProg & " " & q & strCurrentDir & "RidesUpGrade.mdE" & q
If Shell(strShellProg, vbNormalFocus) > 0 Then
' code here for shell ok
Application.Quit
Else
' code here for shell not ok
MsgBox "Un able to run Rides upgrade", vbCritical, AppName
Application.Quit
End If
End Sub
Так что в приведенном выше примере используется полный путь к msaccess.exe.Он был протестирован на XP, Vista, Win7 и т. Д., И он всегда работал для меня.
И в случае более чем одной версии Access или использования среды выполнения, вы можете не захотеть использоватьрасширение для запуска файла.Таким образом, это гарантирует, что вы используете ту же версию и тот же .exe, который вы используете в данный момент.Таким образом, приведенный выше код извлекает текущий путь к msaccess.exe, который вы используете, а не по расширению файла.