我有十几个用户都访问了同一个Access数据库,这使得更新变得很痛苦,因为他们在更新文件时都必须注销。要解决这个问题,我想让他们使用一个简单的启动器,如下所示:
DatabaseLauncher.bat
start Z:\AccessDatabases\SharedAccessFile-version1.accde
然后,我将更新启动器中的版本,以便用户可以关闭数据库并在闲暇时打开它以获取新功能。
运行脚本会产生此错误:The process cannot access the file because it is being used by another process.
从命令行运行命令可以很好地工作。
答案 0 :(得分:0)
以下是解决该问题的脚本,以及一些增强功能,可以处理不同用户计算机上的Access的多个版本:
if exist "C:\Program Files\Access2007\Office12\MSACCESS.EXE" (
Start "" "C:\Program Files\Access2007\Office12\MSACCESS.EXE" "Z:\AccessDataBases\SharedAccessFile-version1.accde"
) else (
if exist "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" (
Start "" "C:\Program Files\Microsoft Office\Office12\MSACCESS.EXE" "Z:\AccessDataBases\SharedAccessFile-version1.accde"
) else (
Start "" "C:\Program Files (x86)\Microsoft Office\Office12\MSACCESS.EXE" "Z:\AccessDataBases\SharedAccessFile-version1.accde"
)
)
答案 1 :(得分:0)
这是我在.vbs脚本中用于在注册表中搜索指定程序的代码,如果找到,请运行它,如果不显示消息。它是通过各种公共来源修补而成的。
可以将其展开以启动指定的数据库,并使用/ x等参数来运行指定的宏。
dim objShell, WshShell, ProgToFind
Set objShell = CreateObject("WScript.Shell")
Set WshShell = WScript.CreateObject("WScript.Shell")
On Error Resume Next
ProgToFind = "MSACCESS.EXE"
AppPath = WshShell.RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" & ProgToFind & "\")
If Len(AppPath) = 0 Then
WScript.Echo "App Not Found"
WScript.Quit
End If
CommandStr = Chr(34) & AppPath & Chr(34) 'Enclose the AppPath in double quotes
objShell.run CommandStr 'Execute the command string