VBA:如何运行MS访问其他应用程序(VBA: How to run another applica

2019-07-29 10:16发布

我一直试图让这个问题想通了,似乎我不能找到解决问题的任何地方。 这里是第一部分: 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代码,这两者都不在这种情况下工作。

Answer 1:

我一直使用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有两个可选参数为好。
我没有在上面的例子说明这一点,但您可以:

  • 参数传递给可执行文件
  • 隐藏调用的可执行文件的窗口


Answer 2:

请点击此链接

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

我希望它可以帮助你



Answer 3:

只是摆弄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"

它可能给你一些想法。



Answer 4:

校验

Shell szFileName, vbNormalFocus

与其他一些可执行文件。 它可以是一些问题与您的工具。



文章来源: VBA: How to run another application from MS Access