ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

【VB封装Excel_VBA代码为Dll】

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2011-11-20 20:21 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:封装

    使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过。

一、启动VB6.0:

   执行:“文件夹(F)”——“新建(N)”——选择“ActiveX DLL”,如下图1:



二、引用:VB中对Excel的引用

执行:“工程(P)”——“引用(N)”——选择所要引用的项目:如下图2
Excel 2000中:
Microsoft Excel 9.0  Object Library
Microsoft Office 9.0  Object Library

Excel 2003中:
Microsoft Excel 11.0  Object Library
Microsoft Office 11.0  Object Library



三、编写代码:
  1、将工程默认名称“工程1”,改为“zygtest”,将类模块默认名称“Class1”,
改为“zyg365”,
  2、在类模块的代码编辑区写入代码:如下图3
   模块名称为“hongtong”,代码如下

   在VB中编写代码时:要注意以下声名
Dim XLAPP As Object
Set XLAPP = GetObject(, "Excel.Application")
代码中引用对象,如SHEET,Cell等,前面要加“XLAPP.
    (或按照 Sub hongtong() 中的格式编写。)

Sub hongtong()   
   Dim excelApp As New Excel.Application
   Dim excelWorkBook As Excel.Workbook
   Dim excelWorksheet As Excel.Worksheet
   Set excelWorkBook = excelApp.Workbooks.Add  '创建新工作簿
   Set excelWorksheet = excelWorkBook.Sheets(1)

   excelWorksheet.Cells(2, 3) = "宏通"      '写入数据
   excelWorksheet.Cells(3, 4) = "zyg365"    '写入数据

   excelApp.Visible = True        '显示excel界面,用于调试
   excelWorkBook.PrintPreview     '打印预览
   excelWorkBook.PrintOut         '打印输出
   excelWorkBook.Saved = True
   'excelWorkBook.Close           '关闭工作薄
   'excelApp.Quit                 '退出excel
End Sub



四、工程属性设置:(可以不设置,本步骤可以省略)

   为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4
   执行:“工程(P)”——“工程1属性(E)…”(当前工程中为:“zygtest属性(E)…”)


五、保存工程、测试、打包生成Dll文件:
1、保存:单击保存,保存到一个文件夹中;
2、测试:执行工具栏上的“启动”(右向的三角图标)按钮,检查是否存在错误;
3、打包生成Dll文件:
   执行:“文件(F)”——“生成工程1.dll(K)”(当前工程中为:“zygtest.dll”),
重命名为“zyg.dll”,至此,Dll文件制作结束。

六、在Excel_VBA工程中引用、调用zyg.dll文件:如下图5




1、引用zyg.dll文件:
   首先在Excel的VBE窗口中,执行“工具(T)”——“引用(R)”——在“引用”对话框中,
单击“浏览(B)…”按钮,找到“zyg.dll”文件——“确定”即可。
   在工作簿事件中,编写代码:工作簿启动时,注册“zyg.dll”控件,工作簿关闭时,反注册
“zyg.dll”控件:

在ThisWorkbook中:

Private Sub Workbook_Open() '注册、引用zyg.dll
  Shell "Regsvr32 /s " & VBA.Chr(34) & ThisWorkbook.Path & "\zyg.dll" & VBA.Chr(34), vbHide

End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean) '反注册zyg.dll
  Shell "Regsvr32 /u /s " & VBA.Chr(34) & ThisWorkbook.Path & "\zyg.dll" & VBA.Chr(34), vbHide
End Sub


2、编写调用zyg.dll中代码的模块:
Sub test()
  Dim kk As New zyg365   'zyg365为VB中类模块名称:输入完New后,敲空格键,
                         '直接出现选择列表框,从中选择“zyg365”
                         'kk可任意命名
  kk.hongtong   'hongtong为VB中要执行的模块的名称:输入完kk.后,
                '直接出现选择列表框,从中选择“zyg365”
                '为你的VB中的过程名称,从列表中选的
  Set kk = Nothing '释放类资源
End Sub

        以上技巧主要是从本论坛及ExcelHome论坛学习、借鉴,然后查阅一些资料编制而成,首先感谢本论坛中不吝赐教的各位版主、网友们,因水平有限,错误、不当之处难免,敬请各位朋友继续不吝指教。
       欢迎大家提出修改、完善意见或建议!

本实例源码.rar(16.52 KB)

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2011-11-20 20:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
谢谢分享,以后有空来学习。
要有把PPT加载宏封装成DLL方面的资料就好了

TA的精华主题

TA的得分主题

发表于 2011-11-20 20:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
咋文件不能下载,不过已经介绍很详细了,谢谢提供!

TA的精华主题

TA的得分主题

发表于 2011-11-20 21:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
留贴备查,谢谢分享,很想试一下

TA的精华主题

TA的得分主题

发表于 2011-11-20 22:28 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-11-20 23:13 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-10 00:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼上很多人说文件不能下载  那就给解决一下    去专业的dll多版本下载修复网站吧  http://www.dllbang.com

TA的精华主题

TA的得分主题

发表于 2011-12-10 04:41 | 显示全部楼层
的确附件下载不了,请楼主检查一下看看。

TA的精华主题

TA的得分主题

发表于 2011-12-29 14:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
的确附件下载不了

TA的精华主题

TA的得分主题

发表于 2011-12-29 15:23 | 显示全部楼层
看了半天,不知道要把自己的代码在哪个步骤加进去啊
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 01:10 , Processed in 0.037773 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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