我一直试图让这个问题想通了,似乎我不能找到解决问题的任何地方。 这里是第一部分: VBA Shell命令总是返回“找不到文件”在这个问题,但是没有找到%APPDATA%文件夹中的应用一些奇怪的原因,可能是一个安全设置。
因为我已经搬到了导入工具,我存储在数据库中同一目录下,用得到它才能正常工作的小希望。
我的目标是在MS Access点击一个按钮,并直接运行我的导入工具。 现在,我把它打开保存的工具的文件夹。 此作品具有管理员权限我的开发机器上,但没有管理PRIVS在其他机器不能正常工作。 该代码现在看起来像下面这样:
Dim hProcess as Long
Dim myPath as String
Dim ex as String
ex = "C:\WINDOWS\explorer.exe "
myPath = Environ("ProgramFiles(x86)") & "\mytool\"
hProcess = Shell(ex & myPath, vbNormalFocus)
这使得持有该文件被打开,但只能在其拥有完整的管理员权限计算机帐户的文件夹。 当有小于全权限的计算机帐户运行此,它只是什么都不做。
我也曾尝试以下操作:
Dim hProcess As Long
Dim myPath as String
myPath = Environ("ProgramFiles(x86)") & "\mytool\mytool.exe"
hProcess = Shell(myPath, vbNormalFocus)
本节“似乎”的工作,它装载应用程序“mytool.exe”当我在看的过程管理。 然而,几秒钟(也许20)后,弹出一个对话框,指出应用程序“mytool.exe”已停止工作。
这里有一点要注意的是,我有我的开发机器上的管理权限,但我有我家的机器上的所有特权。 在我家的机器,这第二个代码工作,没有任何问题。 在我的机器,它崩溃,而受限制的用户的机器上,它不会做任何事情。
是否有关于如何打开从MS Access此应用程序的任何建议同时使用低于管理员权限? 要么直接或运行该应用程序至少打开,其中,所述应用程序驻留的文件夹。
谢谢!
PS我已经尝试了计算器发现两者ShellAndWait和RunApplication代码,这两者都不在这种情况下工作。
我一直使用ShellExecute
从Windows API时,我需要在VBA来执行的东西。
据我所知,它适用于机器没有完全权限也是如此。
例:
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 lpnShowCmd As Long) As Long
Public Sub ShellEx(ByVal Path As String, Optional ByVal Parameters As String, Optional ByVal HideWindow As Boolean)
If Dir(Path) > "" Then
ShellExecute 0, "open", Path, Parameters, "", IIf(HideWindow, 0, 1)
End If
End Sub
现在,您可以拨打ShellEx
运行几乎任何东西:
'run executable
ShellEx "c:\mytool.exe"
'open file with default app
ShellEx "c:\someimage.jpg"
'open explorer window
ShellEx "c:\"
需要注意的是ShellEx
有两个可选参数为好。
我没有在上面的例子说明这一点,但您可以:
请点击此链接
MS ACCESS:启动一个应用程序从Access 2003 / XP /97分之2000
这里是运行在MS Access应用程序的示例
Private Sub Command1_Click()
Dim myPath As String
myPath = "C:\Program Files\mytool\mytool.exe"
Call Shell(myPath , 1)
End Sub
我希望它可以帮助你
只是摆弄http://www.mombu.com/microsoft/scripting-wsh/t-vista-uac-problem-with-wscriptshell-run-method-1508617.html 。 我想这个Windows 7的家用电脑。
Set objShell = CreateObject("Shell.Application")
myPath = Environ("ProgramFiles(x86)") & "\mytool"
Set objFolder = objShell.Namespace(myPath)
Set objFolderItem = objFolder.ParseName("mytool.exe")
objFolderItem.InvokeVerb "runas"
它可能给你一些想法。
校验
Shell szFileName, vbNormalFocus
与其他一些可执行文件。 它可以是一些问题与您的工具。