ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

吐血奉献:后台监视各个文件的事件!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2002-7-2 15:09 | 显示全部楼层 |阅读模式
我们可以在thisworkbook_open或sheet1_activate中加入自己的代码从而监视本文件中的各个事件,执行指定的代码。但如果你编写的是一个加载宏,你所要监视的文件就不单单是当前的文件了,而是所有打开的文件。但加载宏在后台运行时,用户可能会新打开或关闭文件等执行各种操作,从而可能会出现错误。 为了实现加载宏在后台对所有操作进行监控,我把Excel帮助翻个底朝天,终于实现了这种效果。这几天看到有些朋友也存在这中问题,将自己的一点心得拿出来与大家分享。 要实现这种效果,首先要定义一个Application类 在VBA项目中添加一个类模块AppEventCls,进行声明: Public WithEvents App As Application 这时在代码编辑窗口上面的对象下拉框中就多出了一个新的对象“App”,选中“App”,右边的事件下拉框中可以看到对应的事件“NewWorkbook”,“SheetActivate”等,哈!这就是我们所要的!选中“NewWorkbook”,在代码编辑窗口中出现: Private Sub App_NewWorkbook(ByVal Wb As Workbook) End Sub 添加代码: MsgBox "Hey! You opened a new workbook!" 现在可以执行了吗?噢,还要等一下,我们必须先定义一个属于这个类的对象。 在项目中添加一个新的模块 添加对象的定义 Dim MyApp As New AppEventCls 在自动运行过程中指定对象 Public Sub Auto_Open() Set X.App = Application End Sub 将文件存为加载宏,如“ControlApp.xla”,然后就可以欣赏自己的成果了! 关闭此文件,然后加载刚保存的加载宏。打开一个文件试试。 在类模块中的其他事件中加入代码试试,可以看到这个加载宏响应所有文件的事件! 如果大家有什么心得,可以来email讨论,大家共同学习提高。

TA的精华主题

TA的得分主题

发表于 2002-7-2 19:59 | 显示全部楼层
好东西, 有点 COM 加载项的味道. 稍改:X.App>>MyApp.App

TA的精华主题

TA的得分主题

发表于 2002-7-2 21:44 | 显示全部楼层
对加载宏不熟悉,照上法用不起来,说Dim MyApp As New AppEventCls 未定义 CasBoy你干脆做个文件上传给我们下载用用吧,谢谢!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-7-2 22:19 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
你的类模块的Name属性改成AppEventCls了吗?我明天上传个例子给大家看看

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-7-2 22:21 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
以下是引用Rowen在2002-7-2 19:59:40的发言: 好东西, 有点 COM 加载项的味道. 稍改:X.App>>MyApp.App
哦,对了,我写的匆忙,确实写错了,谢谢版主指出!

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-7-2 22:27 | 显示全部楼层
以下是引用bossda在2002-7-2 16:08:45的发言: to casboy:能否将昨天我说的将所有打开文件的存放路径问题编一下?
把剑魔的代码加入到类模块中的 Private Sub App_WorkbookOpen(ByVal Wb As Excel.Workbook)过程中就可以了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-7-3 13:07 | 显示全部楼层
以下是引用redwin在2002-7-2 21:44:13的发言: 对加载宏不熟悉,照上法用不起来,说Dim MyApp As New AppEventCls 未定义 CasBoy你干脆做个文件上传给我们下载用用吧,谢谢!! 
上传一个例子: [upload=rar]uploadImages/200273137648087.rar[/upload]

TA的精华主题

TA的得分主题

发表于 2002-7-3 15:18 | 显示全部楼层

To CasBoy:

CasBoy大哥: 您的这个东东Rowen斑竹都说好,那一定很好。 具体如何使用这个东东,麻烦哥哥说一下好吗? 先谢了! 在线等待.....

TA的精华主题

TA的得分主题

 楼主| 发表于 2002-7-3 15:29 | 显示全部楼层
你看示例文件了吗?在示例文件的类模块中选择各种事件,填入代码就可以了

TA的精华主题

TA的得分主题

发表于 2002-7-3 15:37 | 显示全部楼层
CasBoy大哥,就是没看明白,我太笨了就是没弄懂,还请大哥详细说说好吗? 谢谢!
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-10-4 04:32 , Processed in 0.033283 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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