ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享]如何制作动态链接库(*.dll)文件和WORD中引用动态链接库

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-1-13 15:03 | 显示全部楼层
很难,部容易学会,但可以看出WORD的功能

TA的精华主题

TA的得分主题

发表于 2005-1-14 16:51 | 显示全部楼层
对呀,窗体能不能放到dll中?斑竹再来个带窗体的例子吧

TA的精华主题

TA的得分主题

发表于 2005-1-17 22:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

非常感谢守柔,我已成功制作了DLL,并且userform可以放到dll中。导入窗体文件后,必须在代码中含有加载窗体的语句,好象没有什么特殊的地方。

不过,我不能用VBA语句“引用”DLL,按守柔版主最后提示的方法也不能“引用”,反而“瑞星”认为是“未知宏病毒”。请问版主和其他高手有没有高招?

TA的精华主题

TA的得分主题

发表于 2005-1-18 12:34 | 显示全部楼层

我也实验了,可以在dll中加入窗体form1,不过要在class中创建一个显示窗体的sub

sub showForm()

form1.Show

end sub

然后在vba中的mydll.showForm就可以显示dll中的窗体了。

[此贴子已经被作者于2005-1-18 12:40:36编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-18 14:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用ykhy在2005-1-17 22:29:00的发言:

非常感谢守柔,我已成功制作了DLL,并且userform可以放到dll中。导入窗体文件后,必须在代码中含有加载窗体的语句,好象没有什么特殊的地方。

不过,我不能用VBA语句“引用”DLL,按守柔版主最后提示的方法也不能“引用”,反而“瑞星”认为是“未知宏病毒”。请问版主和其他高手有没有高招?

此为瑞星的病毒过敏症状,可以对瑞星进行设置,将其中的OFFICE文件不进行扫描。主要原因是VBA中使用了VBE的代码(引用了DLL这句代码),所以不能通过,这是很正常的,我也用瑞星的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-18 14:37 | 显示全部楼层
以下是引用cmyy在2005-1-14 16:51:00的发言: 对呀,窗体能不能放到dll中?斑竹再来个带窗体的例子吧
九楼中的附件即是针对DLL中的窗体,注意是FORM,不是USERFORM

TA的精华主题

TA的得分主题

发表于 2005-1-18 15:28 | 显示全部楼层
守柔:给讲讲FORM与USERFORM的差别吧,一个是vba中的,一个是vb中的,我还真没仔细考虑过这个问题。

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-1-18 15:37 | 显示全部楼层

我对VB也不是太熟悉。

其实作为窗体,它必须依附在一个工程上。在VBA中,使用的是USERFORM,它是依附在VBA工程中,它的对象是APPLICATION;而在VB中,它的FORM是依附在VB工程中的,它的对象可以是生成的EXE文件,或者是DLL等文件。这就是两者这间的区别。

不知这样理解,说不说得通。

TA的精华主题

TA的得分主题

发表于 2005-1-20 00:03 | 显示全部楼层

模板对“.DLL”的引用关键是必须先在操作系统的“注册表”中注册,当手工引用时VBA会自动注册,这就是为什么换一台机器就不能使用的原因。

今天我发现模板自动引用“DLL”还有更简单的方法,也不会成为病毒的制造者。方法是在模板的“OPEN”或“NEW”中加入如:

dim testdll as long

testdll=shell("regsvr32 /i /s d:\test\test.dll",0)

其中“d:\test\test.dll”为“DLL”具体路径和DLL名,并注意空格;如果出现提示不要理会。建议加入判断是否已注册,避免每次打开都引用。

我使用的是OFFICE2000,在WIN 98和WIN XP通过。

TA的精华主题

TA的得分主题

发表于 2005-2-6 22:23 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-21 20:28 , Processed in 0.045466 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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