未公开的SysCmd功能
(本文原作者: Wayne Phillips 翻译整理 : andymark )
这里只选择部分未公开的的SysCmd 功能:
1.把MDB转换成MDE文件
用法: SysCmd 603, strPathInputMdb, strPathOutputMde
Vb调用的方法:
Dim objaccess
Set objAccess = CreateObject("access.Application")
objaccess.SysCmd 603, strPathInputMdb, strPathOutputMde
Set objaccess= Nothing
备注: 转换MDE前请确保你的MDB已转换到当前版本
2. 返回当前ACCESS.EXE 实例的PID (仅限access 2000以上版本)
用法: SysCmd(609)
3. 编译VBA模块
用法: SysCmd(504, Flag)
说明: Flag =16483 ---编译VBA模块并保存
Flag =16484 ---编译VBA模块但不保存
4.压缩数据库 (仅限access 97)
用法:SysCmd(602, strPathSourceMdb, [strPathDestinationMdb])
5.创建 MSysIMEXSpecs 和 MSysIMEXColumns 表
用法: SysCmd(555)
MSysIMEXSpecs 和 MSysIMEXColumns 是用来保存导入/导出设置的相关信息,并不是access默认的系统表
运行SysCmd(555) 会自动创建 MSysIMEXSpecs 和 MSysIMEXColumns 表
6.VBA引用数量 (仅限access 97)
用法: SysCmd(500)
功能等同于: access.References.Count
7.转为Access 97 文件格式 (仅限access 2000以上版本)
用法: SysCmd(605, strPathOutput)
功能等同于: Access.ConvertAccessProject strSourcePath, strDestinationPath, acFileFormataccess97
8.转换为ADP 项目 (没有表/查询) (仅限access 2000以上版本)
用法: SysCmd(607,strProjectPath)
从当前的数库中生成一个新的ADP 项目,并导入窗体,报表,VBA模块,宏等对象
此功能跟升迁向导不一样,它不处理表和查询的升迁.
9.查看Office助理提示内容 (仅限access 2000以上版本)
用法: SysCmd(608, intTipID)
intTipID 取值范围 (0-60)
Debug.Print SysCmd(608, 6) 返回:" 当编写宏时,可以用 RunCommand 操作执行菜单命令。"
10.设置应用实例的键盘布局
用法: SysCmd(710, InputLocaleID)
InputLocaleID = &H08090809: British
InputLocaleID = &H04090409: US English
InputLocaleID = &04150415: Polish
InputLocaleID = &04190419: Russian
InputLocaleID = &H04080408: Greek
功能与API ActivateKeyboardLayout 一样,操作更为方便
11.获得指定线程的活动键盘布局
用法: SysCmd(711)
返回当前应用程序的InputLocaleID
12.判断当前access对象是否有在设计视图模式
用法: SysCmd(714)
返回一个布尔值(true/false) True: 如果 窗体,报表,宏,模块 目前在设计模式打开 返回True
13.access 编译版本
SysCmd(acSysCmdAccessVer) = 9 -> access 2000
SysCmd(715) = 2719 ' access 2000 No Service Pack
SysCmd(715) = 3822 ' access 2000 SP1
SysCmd(715) = 4506 ' access 2000 SP2
SysCmd(715) = 6620 ' access 2000 SP3
SysCmd(acSysCmdAccessVer) = 10 -> access 2002
SysCmd(715) = 2627 ' access 2002(XP) No Service Pack
SysCmd(715) = 3409 ' access 2002(XP) SP1
SysCmd(715) = 4302 ' access 2002(XP) SP2
SysCmd(715) = 6501 ' access 2002(XP) SP3
SysCmd(acSysCmdAccessVer) = 11 -> access 2003
SysCmd(715) = 5614 ' access 2003 No Service Pack
SysCmd(715) = 6355 ' access 2003 SP1
SysCmd(715) = 6566 ' access 2003 SP2