ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3923|回复: 6

[原创] ACCESS超级程序框架(UserForm、AccessForm相互嵌入,以及Access子窗体文件分离)!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2017-11-13 12:25 | 显示全部楼层 |阅读模式
本帖最后由 山中老人 于 2017-11-13 12:31 编辑

以前写了不少乱七八糟的AccessVBA、ExcelVBA、WordVBA程序,最近准备将它们整合到一起。
最简单的方法就是写个主文件(主窗体),把这些程序全都嵌入进去。(当然实际还是重写了所有的程序)

第一步就要建立主程序,设计整个程序的架构。
我考虑到将来要增加一些功能,但又不能随时改主程序,所以必须将程序的一些功能模块分离成独立的文件。(模块、类模块分离到时简单,运行时引用就可以了;Access窗体分离了,就不能作为子窗体直接嵌入)

经过长时间研究、四处求教,终于实现了设想:
程序包括三部分:
1、主程序(MDB文件):主窗体、登陆退出功能、引用MyClass文件
2、MyClass文件(MDB/MDE):将所有要用到的函数、常量、类、类型,全部做成【类模块】,并且打包到一个【总类】中,最后在文件中建立一个【模块】将【总类】实例化(我实例化为【MC】)。【MC】还用词典保存了所有程序运行的状态、资源(包括:打开的文件、窗体、"Access.Application"相互调用的方式)
3、功能模块文件(MDB/MDE):每个文件包括一些窗体、模块等,实现特定的功能。为保证与主程序沟通,模块中必须包括“MC As Object ” 以及“Sub SetMC(MC_ as Object)”,以接受来自主文件的【MC】实例引入。

运行时:
1、打开主程序
2、主程序自动引用MyClass文件,初始化【MC】并注册。
3、登录后,打开主窗体,主窗体【MC】注册。
4、主窗体根据需要【打开功能模块文件】:
  a、CreateObject("access.application") 再.OpenCurrentDatabase文件。
  b、使用App.Run "SetMC",MC   将主程序的MC引入子文件中。保证子文件、主文件的各个窗体间相互调用。

  c、打开至文件中的窗体,用API抓到主窗体中,并定位其大小位置,实现嵌入!


实现的核心就是这个【MC】对象,将分离的各个"access.application",连接到一起!


附件是用来测试这个想法的可行性,不完全按照上述制作的。 测试.rar (540.13 KB, 下载次数: 249)





评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2017-11-14 08:48 | 显示全部楼层
谢谢分享    学习学习

TA的精华主题

TA的得分主题

 楼主| 发表于 2017-11-20 19:07 | 显示全部楼层
本帖最后由 山中老人 于 2017-11-20 22:56 编辑

基本完成了!各种情况(MDE、MDB,引用、打开)下的窗体嵌入!还没测试EXCEL、Word文件,基本也就这样了!
MyClass文件 还没分离,暂时跟主文件一起。 测试9.rar (1.01 MB, 下载次数: 237)





TA的精华主题

TA的得分主题

发表于 2018-8-27 00:38 | 显示全部楼层
64位系统下编译错误,提示“类型不匹配”。

TA的精华主题

TA的得分主题

发表于 2018-8-27 00:58 | 显示全部楼层

Win10 64位系统+Office 64位
编译提示“类型不匹配”。

代码

代码

错误提示

错误提示

TA的精华主题

TA的得分主题

发表于 2018-8-27 01:22 | 显示全部楼层
Win10 64位系统+Office 2016 64位,提示编译错误“类型不匹配”。

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-8-9 11:15 | 显示全部楼层
myua2k 发表于 2018-8-27 01:22
Win10 64位系统+Office 2016 64位,提示编译错误“类型不匹配”。

这调用API的定时器功能, 其实不是必须的。 Access 和 EXCEL都有自己的定时器。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-23 15:15 , Processed in 0.033083 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表