Ric*_*ick 3 ms-access vba ms-access-2003
我一直在使用以下命令通过VBA打开另一个MDB Access文件:
Shell "cmd /c " & Chr(34) & strNewFullPath & Chr(34), vbHide
Run Code Online (Sandbox Code Playgroud)
strNewFullPath是MDB文件的完整路径.使用Access 2010时工作正常,但不能在Access 2003上运行.如果我在XP DOS终端中运行该命令,它将运行.
我可以用其他什么命令,应该在Access 2003中了工作,并与Access运行?
尝试使用Windows Scripting Host Object Model(WSHOM):
Sub RunFile(filename As String)
Dim oShell As Object
Set oShell = GetShell
If Not oShell Is Nothing Then
oShell.Run filename
End If
End Sub
Function GetShell() As Object
On Error Resume Next
Set GetShell = CreateObject("WScript.Shell")
End Function
Run Code Online (Sandbox Code Playgroud)
Windows文件关联应允许在其本机应用程序中打开这两种类型的文件.
RunFile strNewFullPath
Run Code Online (Sandbox Code Playgroud)
Run方法有两个可选参数.请注意,大部分内容都是从MSDN复制的:
intWindowStyle(integer)0到10之间的数字:
0 - 隐藏窗口并激活另一个窗口.
1 - 激活并显示一个窗口.如果窗口最小化或最大化,系统会将其恢复到原始大小和位置.应用程序应在首次显示窗口时指定此标志.
2 - 激活窗口并将其显示为最小化窗口.
3 - 激活窗口并将其显示为最大化窗口.
4 - 以最近的大小和位置显示窗口.活动窗口保持活动状态.
5 - 激活窗口并以当前大小和位置显示.
6 - 最小化指定的窗口并激活Z顺序中的下一个顶级窗口.
7 - 将窗口显示为最小化窗口.活动窗口保持活动状态.
8 - 以当前状态显示窗口.活动窗口保持活动状态.
9 - 激活并显示窗口.如果窗口最小化或最大化,系统会将其恢复到原始大小和位置.应用程序应在还原最小化窗口时指定此标志.
10 - 根据启动应用程序的程序状态设置show-state.
我不知道此参数的默认值.请注意,有些程序会忽略您设置的任何值(我无法告诉您哪些值).
bWaitOnReturn(布尔值)
异步代码设置为False.Run方法在完成之前将控制权返回给调用程序.默认值为False.
如果要使用Access VBA在另一个Access应用程序实例中打开数据库,则可以执行以下操作:
Dim objApp As Access.Application
Set objApp = New Access.Application
objApp.UserControl = True
objApp.OpenCurrentDatabase "C:\Access\sample.mdb"
Set objApp = Nothing
Run Code Online (Sandbox Code Playgroud)
将UserControl设置为True可使新应用程序实例在过程完成后打开。
如果要隐藏新的Access实例,请包括:
objApp.Visible = False
Run Code Online (Sandbox Code Playgroud)
我建议采用这种方法,因为它还为您提供了一种通过objApp对象变量自动执行新应用程序实例的方法。但是,如果您对自动执行新实例不感兴趣,则该方法仅在您无法使其他任何方法起作用时才有用。