收藏 分享(赏)

VB封装Excel宏代码的三个方法.doc

上传人:weiwoduzun 文档编号:4407169 上传时间:2018-12-27 格式:DOC 页数:7 大小:316KB
下载 相关 举报
VB封装Excel宏代码的三个方法.doc_第1页
第1页 / 共7页
VB封装Excel宏代码的三个方法.doc_第2页
第2页 / 共7页
VB封装Excel宏代码的三个方法.doc_第3页
第3页 / 共7页
VB封装Excel宏代码的三个方法.doc_第4页
第4页 / 共7页
VB封装Excel宏代码的三个方法.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、VB 封装 Excel_VBA 成 DLL 技巧使用 VB6.0 在 WinXP_sp2、Excel 2000 环境下制作、测试通过。一、启动 VB6.0:执行: “文件夹( F)”“新建( N)”选择“ActiveX DLL”,如下图 1:二、引用:VB 中对 Excel 的引用 执行:“工程(P)” “引用(N)” 选择所要引用的项目:如下图 2Excel 2000 中:Microsoft Excel 9.0 Object LibraryMicrosoft Office 9.0 Object LibraryExcel 2003 中:Microsoft Excel 11.0 Object L

2、ibraryMicrosoft Office 11.0 Object Library三、编写代码:1、将工程默认名称“工程 1”,改为“zygtest”,将类模块 默认名称“Class1”,改为“zyg365”,2、在类模块的代码编辑区写入代码:如下图 3模块名称为“hongtong ”,代码如下在 VB 中编写代码时:要注意以下声名Dim XLAPP As ObjectSet XLAPP = GetObject(, “Excel.Application“)代码中引用对象,如 SHEET,Cell 等,前面要加“XLAPP.”(或按照 Sub hongtong() 中的格式编写。 )Sub h

3、ongtong() Dim excelApp As New Excel.ApplicationDim excelWorkBook As Excel.WorkbookDim excelWorksheet As Excel.WorksheetSet excelWorkBook = excelApp.Workbooks.Add 创建新工作簿Set excelWorksheet = excelWorkBook.Sheets(1)excelWorksheet.Cells(2, 3) = “宏通“ 写入数据excelWorksheet.Cells(3, 4) = “zyg365“ 写入数据excelApp

4、.Visible = True 显示 excel 界面,用于调试excelWorkBook.PrintPreview 打印预览excelWorkBook.PrintOut 打印输出excelWorkBook.Saved = TrueexcelWorkBook.Close 关闭工作薄excelApp.Quit 退出 excelEnd Sub四、工程属性设置:(可以不设置,本步骤可以省略)为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图 4执行: “工程( P)”“工程 1 属性(E )”(当前工程中为: “zygtest 属性(E)”)五、保存工程、测试、打包生成 Dll 文件:1

5、、保存:单击保存,保存到一个文件夹中;2、测试:执行工具栏上的“启动”( 右向的三角图标)按钮,检查是否存在错误;3、打包生成 Dll 文件:执行: “文件( F)”“生成工程 1.dll(K)”(当前工程中为:“zygtest.dll”),重命名为“zyg.dll”, 至此,Dll 文件制作结束。六、在 Excel_VBA 工程中引用、调用 zyg.dll 文件:如下图 51、引用 zyg.dll 文件:首先在 Excel 的 VBE 窗口中,执行“工具( T)”“引用(R)” 在“引用”对话框中,单击“浏览(B )”按钮,找到“zyg.dll”文件 “确定”即可。在工作簿事件中,编写代码:

6、工作簿启动时,注册“zyg.dll”控件,工作簿关闭时,反注册“zyg.dll”控件:在 ThisWorkbook 中:Private Sub Workbook_Open() 注册、引用 zyg.dllShell “Regsvr32 /s “ & VBA.Chr(34) & ThisWorkbook.Path & “zyg.dll“ & VBA.Chr(34), vbHideEnd SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean) 反注册 zyg.dllShell “Regsvr32 /u /s “ & VBA.Chr(34) & T

7、hisWorkbook.Path & “zyg.dll“ & VBA.Chr(34), vbHideEnd Sub2、编写调用 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另一个版本:1、

8、 (本帖里)图 1 就是 vb6.0 在桌面的图标,双击它2、弹出窗口后,先选择 ActiveX DLL(图 2 的红框) ,再点击打开(图 2 的蓝框)3、起个名字(图 3 蓝色框内文字改为 ABC)4、先保存一下,桌面新建个文件夹,点击图 3 红框里的保存标志,弹出另存为对话框,选择桌面双击刚刚建立的那个文件夹(图 4 蓝色框) 保存(图 4 红色框)保存5、写代码,模块里输入下面代码Sub def()Dim EL As ObjectSet EL = GetObject(, “Excel.Application“)With EL.ActiveSheet.Cells(1, 3) = .Cel

9、ls(1, 1) & .Cells(1, 2)End WithSet EB = NothingEnd Sub(如图 5 所示)6、点击文件(图 5 红色框),在出现的下拉菜单中点击 生成工程 1.dll(k).(默认保存位置)点击确定至此,Dll 就制作完成了四、使用 dll1、新建一个 excel,A1 单元格输入“你“,B1 单元格输入“好 “2、打开 VBE,工具引用浏览找到刚刚创建的文件夹 点击工程 1.dll(图 6)点击打开点击确定3、插入一个模块,输入下面代码Sub test()Dim a As New ABCa.defSet a = NothingEnd Sub4、运行一下代码

10、,C1 单元格出现 “你好“至此,一个由制作到使用 dll 的简单示例全部完成用 DLL 封装 VBA本文用一简例来演示如何将一正常在 VBA 中运行的代码移植到 VB 制作的 DLL 中去,并介绍如何在VBA 中进行调用。这仅仅是最初级的介绍,希望能对此内容想了解的版友们一些帮助,而已掌握该技术的 FANS 们完全可以跳过本文。 先来了解一下什么是 DLL:DLL 是 Dynamic Link Library 的缩写,意为动态链接库。在 Windows 中,许多应用程序并不是一个完整的可执行文件,它们被分割成一些相对独立的动态链接库,即 DLL 文件,放置于系统中。当我们执行某一个程序时,相

11、应的 DLL 文件就会被调用。一个应用程序可有多个 DLL 文件,一个DLL 文件也可能被几个应用程序所共用,这样的 DLL 文件被称为共享 DLL 文件。DLL 文件一般被存放在 C:WindowsSystem 目录下。 因此,DLL 文件可以看作是一个程序扩展函数库,成为应用软件程序的外挂接口。就象我们常在程序中用的 WINDOWS API,就是如此,它是微软提供给程序员的函数宝库,用户只需了解函数功能与调用规则就可以拿来使用,而不用知道也不需要知道具体源码。也正因为此,现在许多 VBA 开发者在保护其代码时也多采用此法来维护其合法权益。现在开始。假如我们要编这么一段代码:将工作表 She

12、et1 的 A1 单元格的数值与 B1 单元格的数值相加填写到 C1 单元格去(嘿嘿,这是极简单的了,只是用来说明问题) ,在 VBA 模块我们可以编写这样的代码: Sub test() On Error Resume Next Dim i, j As Integer With Worksheets(“Sheet1“) i = .Cells(1, 1).Value j = .Cells(1, 2).Value .Cells(1, 3) = i + j End With End Sub 执行上面的宏,会发现 C1 单元格自动会出现 A1+B1 的结果了。下面我们在VB 中生成包含以上宏功能的函数

13、(子程序)的 DLL 文件。打开 VB, “文件”-“新建工程”-“ActiveX DLL”,此时会弹出 class1 模块代码窗口,将如下代码写入: Sub test() On Error Resume Next Dim i, j As Integer Dim EB Set EB = GetObject(, “Excel.Application“) With EB.ActiveSheet i = .Cells(1, 1).Value j = .Cells(1, 2).Value .Cells(1, 3) = i + j End With Set EB = Nothing End Sub 在生

14、成 DLL 之前,注意确保 VB 里“工程“-“ 引用 “里“Microsoft Excel 9.0 Object Library“前面的勾已打上,再就是正确设定好 DLL 描述与名称。菜单“工程”-“工程属性”-“工程描述” ,里面可以写上你的 DLL 功能名称或简介或版本号。 “视图”-“属性” ,设定名称为你在其他开发环境中欲使用的引用名称,如“Mytest ”。好,现在点击菜单“文件”- “生成dll”,会弹出路径与文件取名窗,按你的意思选择与输入好路径和即将生成的 DLL 文件名,按确定就会完成 DLL 的生成工作。此时 DLL 已生成在你指定的目录下了,当前工程保不保存就随便你自己

15、了,如果以后还想再编辑修改的话,当然得取个文件名保存好:) 。生成的 DLL 如果正确的话,VBA 中只要引用后就可正常调用了。现在回到 EXCEL VBA 开发环境中来,先对刚生成的 DLL 进行一下引用。关于引用,可以手工引用,也可以用代码来做。手工引用的步骤是:在 VBE 窗口中,菜单“工具”-“引用”,会弹出如下窗口:刚才生成的 DLL,选择打勾确定即可。代码引用:Shell “regsvr32 /s “ & “dll“, vbHide,加 s 参数是防止出现确认窗口,影响界面。取消引用则使用/u 参数。然后在 VBA 中写调用的代码: Sub DLLtest()Dim abc As New Mytest 定义 abc 为新类,即在 DLL 文件中定义的 abc.test 调用 DLL 中提供的过程,来完成原来在 VBA 中的功能,起到隐藏代码的效果Set abc = Nothing End Sub 提供的示例中,将 VBA 方法与 DLL 调用放在了一起,便于大家进行比较。另外,DLL 文件的制作远比我在这里介绍的复杂,还会涉及到类初始化、自定义属性与事件等内容,不过如果有时我们仅仅需要借助其来保护我们的 VBA 代码的话,掌握这部分也就足够了,呵呵。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 网络科技 > 软件工程

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报