【Access源码】鲜为人知的隐藏功能实现自动生成mde/accde-红尘如烟
Access软件网QQ交流学习群(群号码198465573),欢迎您的加入!
首页 >技术文章> Access数据库-模块/函数/VBA


【Access源码】鲜为人知的隐藏功能实现自动生成mde/accde

发表时间:2019/3/31 17:33:16 评论(2) 浏览(12521)  评论 | 加入收藏 | 复制
   
摘 要:如何用代码自动生成mde/accde文件
正 文:

当我们用Access开发一个软件完成之后,为了保护我们的劳动成果,一般有2种方式:设置VBA工程密码,编译生成mde/accde格式的仅执行文件。


而由于mdb格式已使用多年,现在网上轻易便能找到破解mdb格式的工具。而accdb格式虽然暂时没有破解工具在网上流传,但VBA本身其实已经很多年没有什么更新了,每次的新版本仅仅只是维护。因此VBA工程密码是不怎么保险的方式。那么剩下的唯一出路,就只有生成mde/accde格式的仅执行文件了。


一般我们都是通过菜单或功能区来生成。



但随着我们使用Access开发的越来越深入,就会想,每次都要点几下也挺烦的,能不能用代码自动来完成这个生成mde/accde的功能呢?


通过在VBA界面按F2打开对象浏览器,我们只找到一个 Runcommand acCmdMakeMDEFile 命令。然而很可惜,此命令是没有参数的,我们不能指定文件路径名,它本质还是和我们手动操作一样,达不到我们“自动”的需要。



拔剑四顾心茫然,敢问路在何方?路当然是有的,否则本公子半天牛逼不都白吹了!我当然不会干那种只收刀片不收红包的事情啦!


不卖关子,答案揭晓:


其实Access还有一个完全隐藏的功能可以来实现自动生成mde/accde,只不过这个功能,我们从对象浏览器,帮助文档,都是找不到它的踪迹的。


这难道就是传说中口口相传,不落文字的武林门派最高秘传心法?! 还等什么!快抢一本走罢!

'============================================================================
'函数名称: MakeMDE
'功能描述:  根据MDB/ACCDB文件,编译生成MDE/ACCDE文件。
'输入参数: MDBPathname 源MDB文件路径名。
'           MDEPathname 要生成的MDE/ACCDE文件路径名。
'返回参数: 成功返回True,失败返回False。
'相关调用:
'使用注意: 这里用的是Access的隐藏功能,603这个常量值,在对象浏览器和帮助文档中是找不到的。
'           因此有可能未来的新版本Access不支持此功能,不过目前到2019都还能用。
'           另外此函数不能放在要用来生成的MDB/ACCDB文件中,必须要在另一个文件中使用。即你
'           不能把此函数放在A.mdb中,然后再调用它A.mdb生成A.mde。必须把函数放在B.mdb中,
'           调用它来生成A.mde。
'兼 容 性: Access 2003~2019
'参考资料:
'作  者: 红尘如烟
'修订记录: 2012-07-21 创建。
'           2019-03-31 添加错误处理,进行完善。
'============================================================================
Function MakeMDE(MDBPathname As String, MDEPathname As String) As Boolean
    On Error GoTo ExitHere

    '此常量Access本身没有,必须有这句常量声明,或者直接使用603这个值。
    Const acSysCmdMakeMDE = 603 

    MakeMDE = False

    Dim appAccess As New Access.Application
    appAccess.SysCmd acSysCmdMakeMDE, MDBPathname, MDEPathname
    appAccess.Quit acQuitSaveNone

    MakeMDE = True

ExitHere:
    Set appAccess = Nothing
    Exit Function

ErrorHandler:
    MsgBox Err.Description, vbCritical, "Error #" & Err.Number
    Resume ExitHere
End Function



Access软件网交流QQ群(群号:198465573)
 
 相关文章
如何解决禁止用SHIFT键打开MDB/MDE文件  【未知  2003/12/14】
生成MDE文件  【竹笛  2008/6/16】
ACCDB与MDB文件格式之间的区别、ACCDE与MDE的区别  【麥田  2012/8/13】
Access2007\Access2010\2013及以上版本设置...  【麥田  2013/6/3】
mdb怎样生成mde  【杨雪  2015/6/9】
自定义函数:用代码判断access文件是不是mde文件  【Natsume Takashi   2018/10/15】
mde/accde文件中有的事件不执行/没有执行  【伊西军  2019/2/24】
常见问答
技术分类
相关资源
文章搜索
关于作者

红尘如烟

文章分类

文章存档

友情链接