本帖最后由 XZ19860527 于 2011-8-14 21:17 编辑
题外话 http://club./thread-749866-1-1.html 看了everee 兄为方便自己工作开发VBA工具是否属于公司的讨论深有感触,我们为了提高工作效率没日没夜的钻研办公技巧,虽然得到了领导的赞同和自身的提高,但世上没有永久的宴席,和公司总有分手的的时候,离别方知世情冷暖,面对自己的心血被公司免费占用,岂不痛心疾首? 回首EHOME学习两年,虽然算不上多大进步,至少简单的工具还是做了不少,为了保护自己权益,于是觉得有必要开始学习封装技术,或许不需要多精通,只要能把主要,核心的代码隐藏起来就可以了!,或许加上试用时间限制或者注册码就更完美.
从今天开始学DLL封装,与家人同勉! 以下教程转自http://blog.sina.com.cn/s/blog_55ee0b090100hcx6.html
在vb中,修改“工程”名称和“类模块”名称为需要的名称。本例中,工程修改为TestDLL,类模块修改为Test。 引用Microsoft Office 11.0 Object Library和Microsoft Excel 11.0 Object Library。 Sub mySub(EApp As Excel.Application, r As Long, c As Integer) Dim wb As Excel.Workbook, sh As Excel.Worksheet Set wb = EApp.ThisWorkbook Set sh = wb.ActiveSheet sh.Cells(r,c)="这是测试文本" '其他的代码 End Sub
在Excel中,在VBA中要引用刚才生成的TestDll.dll。 新建一个模块,在其中定义一个类变量T: Public T As New TestDll.Test
Sub AAA() On Error Resume Next T.mySub Application, 3, 7 End Sub
至此,可以在Excel中执行宏AAA,并会在(3,7)单元格得到字符串"这是测试文本"。
'====加载与卸载引用的语句======================================================== shell "Regsvr32 /u /s " & Chr(34) & ThisWorkBook.path & "\test.dll"& Chr(34) '卸载引用的Dll shell "Regsvr32 /s " & Chr(34) & ThisWorkBook.path & "\test.dll"& Chr(34) '加载引用的Dll /s 表示不出现对话框
'========================================================= 怎样去掉"工程-引用"中曾经引用的自制的DLL历史记录?
在注册表的 HKEY_CLASSES_ROOT\TypeLib\ 分支中查找“数据”等于“Test”(需要删掉的历史记录),然后会找到一个键值,该键值的数据等于“Test”,看看这个分支下面的数据,是否包含你 DLL的位置等信息,如果确定。则删除这个键值所在HKEY_CLASSES_ROOT\TypeLib\下的{xxxxxxxx-xxxx-xxxx- xxxx-xxxxxxxxxxxx}分支。(xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx根据你的实际情况是不同的16 进制)
必要条件: 1 首先要安装VB6.0(精简版也可以,只有6M) 2 VB引用EXCEL,EXCEL引用DLL 3 恒心,反复调试 相信大家会收获良多!附件中DLL引用的是EXCEL2007(EXCEL12.0),如2003版出错请自己编译! 附件尚未完全成功,!提取10个单元格不重复值,结果代码只执行到9个单元格...字典未计算上限加一的原因 |
|