Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 31847|回复: 71

[VBA] Excel VBA封装成dll的源码

  [复制链接]
发表于 2012-4-22 06:50 | 显示全部楼层 |阅读模式
封装vba  目的:
1 不让使用者看到源代码
2 避免使用者误删源代码 封装后还有很多意想不到的效果
  
'先用vba写几个函数
'写2个事件
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
MsgBox Sh.Name & "  Activate"
End Sub
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Row:Column  " & Target.Row & ":" & Target.Column
End Sub
'写2个函数
Sub myfun1()
  MsgBox "你运行了myadd程序"
End Sub
Sub myfun2()
  MsgBox [a1]
End Sub
''''''=======================
打开vb 创建

把类名称改为 "class1",工程名称改为 "我的封装工程"



vb中的写法

Private WithEvents myApp As Excel.Application
Private myExcel As Excel.Application

Public Sub init(app As Application)
'建立excel与vb的联系
Set myApp = app
app.Caption = "VBA封装成功"
End Sub
'''把vba里面的Workbook_SheetActivate 替换为myApp_SheetActivate 以此类推
Private Sub myApp_SheetActivate(ByVal Sh As Object)
MsgBox Sh.Name & " Activate"
End Sub
Private Sub myApp_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Row:Column " & Target.Row & ":" & Target.Column
End Sub
Sub myfun1()
MsgBox "你运行了myadd程序"
End Sub
'引用单元格的写法
Sub myfun2()
MsgBox myApp.ActiveSheet.[a1] '写法 就是在对象前面 加 myapp..... 后面的写法相信熟悉vba'的你不会陌生了
End Sub
======================================================================
然后在 需要引用dll的excel里面 点thisworkbooks 这样写

Public MyClass As Object '定义一个公共的对象
'关键函数 打开工作簿的时候 定义对象的属性
Private Sub Workbook_Open()
Set MyClass = CreateObject("我的封装工程.Class1")
MyClass.init Application
End Sub
'关闭工作簿的时候注销对象
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set MyClass = Nothing
End Sub

'对比一下 这个函数在vba里面的写法
Sub myfun1()
MyClass.myfun1
End Sub
'对比一下 这个函数在vba里面的写法
Sub myfun2()
MyClass.myfun2
End Sub

==============================
附件有注册程序,把dll发放给 别人使用时候,运行一下 "注册dll.bat" 就可以正常使用.
可以把dll放在一个固定的文件夹 如c:盘程序文件夹. 引用dll的excel文件 就可以随意移动了。 更新dll文件版本的时候 替换掉原有dll文件 再注册一下 就正常了。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 4 +22 金币 +1 收起 理由
lhj323323 + 9 谢谢老师!
BAIXINGR + 12 很给力!
QQ_BC6EEB + 1 很给力!
3xxx + 1 很给力!

查看全部评分

发表于 2012-4-22 07:59 | 显示全部楼层
学习!!!!!!!!!!!!!!!!
回复

使用道具 举报

发表于 2012-8-9 22:21 | 显示全部楼层
回复

使用道具 举报

发表于 2012-8-9 22:21 | 显示全部楼层
                  不做
回复

使用道具 举报

发表于 2012-8-16 11:00 | 显示全部楼层
太好了,这是高级别的视频才能看到的,没想在这里得到了楼主的分享,十分的感谢!
回复

使用道具 举报

发表于 2012-9-9 10:11 | 显示全部楼层
学习学习学习学习
回复

使用道具 举报

发表于 2012-9-9 10:33 | 显示全部楼层
学习                        
回复

使用道具 举报

发表于 2012-9-23 18:06 | 显示全部楼层
      学习了,谢谢
回复

使用道具 举报

发表于 2012-10-11 17:26 | 显示全部楼层
学习啦。谢谢楼主提供!!
回复

使用道具 举报

发表于 2012-10-12 13:36 | 显示全部楼层
楼主辛苦了,谢谢

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-17 08:01 , Processed in 0.218635 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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