Security 当使用VBA打开由mdw文件保护的ms access数据库时,是否模拟按下SHIFT键?

Security 当使用VBA打开由mdw文件保护的ms access数据库时,是否模拟按下SHIFT键?,security,ms-access,mdw,autoexec,Security,Ms Access,Mdw,Autoexec,我希望递归地运行*.mdb文件目录,并搜索它们以查看哪些文件具有特定的链接表 这些文件使用多个*.mdw文件进行保护。我没有写任何东西,但我是它们的维护者 我有过,但它太互动了;我需要它是非互动的;因为我正在搜索的一些*.mdb使用Autoexec宏 据我所知,如果在打开宏时按住SHIFT键,可以避免执行Autoexec宏;但是,我使用in打开这些文件,似乎没有办法按住shift键 我发现了另一个示例(请参见打开数据库时绕过启动设置),但它不允许您使用*.mdw文件解锁数据库,由于该方法没有用于

我希望递归地运行
*.mdb
文件目录,并搜索它们以查看哪些文件具有特定的链接表

这些文件使用多个
*.mdw
文件进行保护。我没有写任何东西,但我是它们的维护者

我有过,但它太互动了;我需要它是非互动的;因为我正在搜索的一些
*.mdb
使用Autoexec宏

据我所知,如果在打开宏时按住SHIFT键,可以避免执行Autoexec宏;但是,我使用in打开这些文件,似乎没有办法按住shift键


我发现了另一个示例(请参见打开数据库时绕过启动设置),但它不允许您使用
*.mdw
文件解锁数据库,由于该方法没有用于
*.mdw
文件的参数,如果您的目标只是检查db文件是否包含特定的链接表,则可以使用ADO
OpenSchema
方法。使用这种方法,您不需要在Access应用程序会话中打开db文件,因此AutoExec宏不会运行

下面是一个使用后期绑定的示例。我留下了注释,以防你们喜欢提前装订。如果Access版本早于2007,请更改提供程序

由于您使用的是Access用户级安全性,因此还必须调整连接字符串以包括MDW的路径,并提供Access安全性用户名和密码。下面是来自的连接字符串示例(使用Jet 4提供程序)。为了便于阅读,我将单行字符串拆分为分号:

Provider=Microsoft.Jet.OLEDB.4.0;
数据源=C:\mydatabase.mdb;
Jet OLEDB:System Database=System.mdw;
用户ID=我的用户名;
密码=我的密码;
公共函数HasLinkedTable(ByVal pDb作为字符串_
ByVal(可作为字符串)作为布尔值
常数adSchemaTables=20&
Dim cn作为对象的ADODB.Connection
将rs设置为对象“ADODB.Recordset”
作为字符串的Dim strConnect
作为布尔值的Dim blnReturn
strConnect=“Provider=Microsoft.ACE.OLEDB.12.0;”_
“数据源=”&pDb&“;”
'Set cn=New ADODB.Connection
Set cn=CreateObject(“ADODB.Connection”)
cn.开放式结构连接
设置rs=cn.OpenSchema(adSchemaTables)
用rs
做而不做
如果!TABLE_NAME=pTable And!表_TYPE=“LINK”然后
'Debug.Print!表格名称!表格类型
blnReturn=True
退出Do
如果结束
.下一步
环
.结束
以
cn.Close
设置cn=Nothing
HasLinkedTable=blnReturn
端函数

+1,这是一种比我要建议的更优雅的方法。(这是霍默·辛普森(Homer Simpson)在他出生时使用的一种变体,结果对他来说并不太好。)(霍默用a键为他按下“Y”键,这样他就不用费心回答那些烦人的“你确定吗?(Y/N)”提示。)