楼主 HHAAMM |
一、名词解释: DLL 的学名叫 动态链接库 二、它是干什么用的: 搜索一下有很完整详细的解释。这里,我只引用过来当中的一句话 “在Windows中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即DLL文件,放置于系统中。当我们执行某一个程序时,相应的DLL文件就会被调用。” 三、制作自己的dll: 使用dll的意义 (以下来自MSDN) 节省内存和减少交换操作。很多进程可以同时使用一个 DLL,在内存**享该 DLL 的一个副本。相反,对于每个用静态链接库生成的应用程序,Windows 必须在内存中加载库代码的一个副本。 节省磁盘空间。许多应用程序可在磁盘上共享 DLL 的一个副本。相反,每个用静态链接库生成的应用程序均具有作为单独的副本链接到其可执行图像中的库代码。 升级到 DLL 更为容易。当 DLL 中的函数发生更改时,只要函数的参数和返回值没有更改,就不需重新编译或重新链接使用它们的应用程序。相反,静态链接的对象代码要求在函数更改时重新链接应用程序。 提供售后支持。例如,可修改显示器驱动程序 DLL 以支持当初交付应用程序时不可用的显示器。 支持多语言程序。只要程序遵循函数的调用约定,用不同编程语言编写的程序就可以调用相同的 DLL 函数。程序与 DLL 函数在下列方面必须是兼容的:函数期望其参数被推送到堆栈上的顺序,是函数还是应用程序负责清理堆栈,以及寄存器中是否传递了任何参数。 提供了扩展 MFC 库类的机制。可以从现有 MFC 类派生类,并将它们放到 MFC 扩展 DLL 中供 MFC 应用程序使用。 使国际版本的创建轻松完成。通过将资源放到 DLL 中,创建应用程序的国际版本变得容易得多。可将用于应用程序的每个语言版本的字符串放到单独的 DLL 资源文件中,并使不同的语言版本加载合适的资源。 特别指出一点,对于excel来说,dll还有一个重要的意义,代码的安全性基本得到了保障。都说破解vba密码是一秒钟的事儿,破解dll可不是那么容易的事儿了。 四、自己制作dll 我们用VB6.0制作dll 首先,你的机器里要安装vb6.0。要是没有,就去下个安上,迅雷里多多... |
2楼 HHAAMM |
1、(本帖里)图1 就是vb6.0在桌面的图标,双击它 2、弹出窗口后,先选择ActiveX DLL(图2的红框),再点击打开(图2的蓝框) 3、起个名字(图3蓝色框内文字改为 ABC) 4、先保存一下,桌面新建个文件夹,点击图3红框里的保存标志,弹出另存为对话框,选择桌面》双击刚刚建立的那个文件夹(图4蓝色框)》保存(图4红色框)》保存 5、写代码,模块里输入下面代码 Sub def() Dim EL As Object Set EL = GetObject(, "Excel.Application") With EL.ActiveSheet .Cells(1, 3) = .Cells(1, 1) & .Cells(1, 2) End With Set EB = Nothing End Sub (如图5所示) 6、点击文件(图5红色框),在出现的下拉菜单中点击 生成工程1.dll(k)...》(默认保存位置)点击确定 至此,Dll就制作完成了 四、使用dll 1、新建一个excel,A1单元格输入"你",B1单元格输入"好" 2、打开VBE,工具》引用》浏览》找到刚刚创建的文件夹 点击工程1.dll(图6)》点击打开》点击确定 3、插入一个模块,输入下面代码 Sub test() Dim a As New ABC a.def Set a = Nothing End Sub 4、运行一下代码,C1单元格出现"你好" 至此,一个由制作到使用dll的简单示例全部完成图1.jpg 图2.jpg 图3.jpg 图4.jpg 图5.jpg 6.jpg |
3楼 poorsol |
这个帖子很不错! |
4楼 laoyebin |
不错的教学贴,郝兄辛苦了 |
5楼 freelegend |
嘻嘻 学到.也希望自己能够用到 |
6楼 大海情怀 |
很好,值得学习! |
7楼 wenshui2006 |
值得学习,,,,, |
8楼 wnianzhong |
谢谢,这个要好好学习一下了. |
9楼 wnianzhong |
什么时候再见你的大作! |
10楼 xiongkehua2008 |
真是不错的图示教材,对菜鸟很有参考价值呀。 |
11楼 lrlxxqxa |
看不懂。看来我太菜了 |
12楼 lrlxxqxa |
看不懂。看来我太菜了 |
13楼 yukaiwz |
谢谢您!我们又进入了一个新的领域 |
14楼 赵文竹 |
留印慢慢学习…… |
15楼 wangqilong1980 |
1、(本帖里)图1 就是vb6.0在桌面的图标,双击它 2、弹出窗口后,先选择ActiveX DLL(图2的红框),再点击打开(图2的蓝框) 3、起个名字(图3蓝色框内文字改为 ABC) 4、先保存一下,桌面新建个文件夹,点击图3红框里的保存标志,弹出另存为对话框,选择桌面》双击刚刚建立的那个文件夹(图4蓝色框)》保存(图4红色框)》保存 5、写代码,模块里输入下面代码 Sub def() Dim EL As Object Set EL = GetObject(, "Excel.Application") With EL.ActiveSheet .Cells(1, 3) = .Cells(1, 1) & .Cells(1, 2) End With Set EB = Nothing End Sub (如图5所示) 6、点击文件(图5红色框),在出现的下拉菜单中点击 生成工程1.dll(k)...》(默认保存位置)点击确定 至此,Dll就制作完成了 四、使用dll 1、新建一个excel,A1单元格输入"你",B1单元格输入"好" 2、打开VBE,工具》引用》浏览》找到刚刚创建的文件夹 点击工程1.dll(图6)》点击打开》点击确定 3、插入一个模块,输入下面代码 Sub test() Dim a As New ABC a.def Set a = Nothing End Sub 4、运行一下代码,C1单元格出现"你好" 至此,一个由制作到使用dll的简单示例全部完成 |
16楼 wqfzqgk |
太简单了一点 ,最好是做成插件的形式,看我的头像的样式 |
17楼 海洋之星 |
很不错,学习了,哈哈 |
18楼 远古石器 |
|
19楼 mjgdxx |
vba密码如何破解呢? |
20楼 zqm1847 |
不错,学学 |
21楼 7786910 |
郝兄辛苦了 |
22楼 空气 |
谢谢 |
23楼 liuguansky |
学习下封装技术 |
24楼 豆子修罗 |
ok |
25楼 7786910 |
谢谢分享,学习了。 |
26楼 engyoho |
学习中,谢谢! |
27楼 renrg68 |
值得学习 |
28楼 qinhuan66 |
好好学习天天向上 |
29楼 yz1995 |
赞一个,不错,好好学习 |
30楼 hjinshanz |
图文并茂,很好的教程。 |
31楼 qinhuan66 |
好好学习天天向上 |
32楼 dragonet16 |
下面这段代码封装成dll调用时,只弹出对话框,其部分没有效果,不知道问题出在哪儿,请大侠们多大指教。 Sub cjt() On Error Resume Next Dim xl As Excel.Application Dim xlbook As Workbook Dim xlsheet As Worksheet Dim dr, t As String Dim i, j As Integer Set xl = New Excel.Application Set xlbook = xl.ThisWorkbook Set xlsheet = xlbook.ActiveSheet dr = xl.ActiveCell.Address & ":A65536" i = Excel.Application.WorksheetFunction.CountA(Range(dr)) t = MsgBox("是否选择首条标题所在行?否则会造成误操作!", vbOKCancel + 32, "操作提示") If t = vbOK Then For j = 1 To i - 2 xlsheet .ActiveCell.Rows("1:1").EntireRow.Select xlsheet .Selection.Copy xlsheet .ActiveCell.Offset(2, 0).Rows("1:1").EntireRow.Select xlsheet .Selection.Insert Shift:=xlDown xlsheet .ActiveCell.Select Next j End If End Sub |
33楼 芐雨 |
对菜鸟很有参考价值呀。 |
34楼 poiuyman5 |
skillful |