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

上传人:工**** 文档编号:492391348 上传时间:2022-08-30 格式:DOC 页数:8 大小:441.50KB
返回 下载 相关 举报
VB封装Excel宏代码的三个方法_第1页
第1页 / 共8页
VB封装Excel宏代码的三个方法_第2页
第2页 / 共8页
VB封装Excel宏代码的三个方法_第3页
第3页 / 共8页
VB封装Excel宏代码的三个方法_第4页
第4页 / 共8页
VB封装Excel宏代码的三个方法_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《VB封装Excel宏代码的三个方法》由会员分享,可在线阅读,更多相关《VB封装Excel宏代码的三个方法(8页珍藏版)》请在金锄头文库上搜索。

1、VB封装Excel_VBA成DLL技巧使用VB6.0在WinXP_sp2、Excel2000环境下制作、测试通过。一、启动VB6.0:执行:“文件夹(F)”“新建(N)”选择“ActiveXDLL,如”下图1:二、引用:VB中对Excel的引用执行:“工程(P)”“引用(N)”选择所要引用的项目:如下图2Excel2000中:MicrosoftExcel9.0ObjectLibraryMicrosoftOffice9.0ObjectLibraryExcel2003中:MicrosoftExcel11.0ObjectLibraryMicrosoftOffice11.0ObjectLibrary1

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

3、WorkbookDimexcelWorksheetAsExcel.WorksheetSetexcelWorkBook=创建新工作簿SetexcelWorksheet=excelWorkBook.Sheets(1)excelWorksheet.Cells(2,3)=宏通写入数据excelWorksheet.Cells(3,4)=zyg365写入数据excelApp.Visible=True显示excel界面,用于调试excelWorkBook.PrintPreview打印预览excelWorkBook.PrintOut打印输出excelWorkBook.Saved=TrueexcelWorkBo

4、ok.Close关闭工作薄excelApp.Quit退出excel2EndSub四、工程属性设置:(可以不设置,本步骤可以省略)为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4执行:“工程(P)”“工程1属性(E)”(当前工程中为:“zygtest属性(E)”)3五、保存工程、测试、打包生成Dll文件:1 、保存:单击保存,保存到一个文件夹中;、测试:执行工具栏上的“启动”(右向的三角图标)按钮,检查是否存在错误;、打包生成Dll文件:执行:“文件(F)”“生成工程1.dll(K)”(当前工程中为:“zygtest.dll,”)重命名为“zyg.dll”,至此,Dll文件制作结

5、束。六、在Excel_VBA工程中引用、调用zyg.dll文件:如下图541、引用zyg.dll文件:首先在Excel的VBE窗口中,执行“工具(T)”“引用(R)”在“引用”对话框中,单击“浏览(B)”按钮,找到“zyg.dll文”件“确定”即可。在工作簿事件中,编写代码:工作簿启动时,注册“zyg.dll控件”,工作簿关闭时,反注册“zyg.dll控件”:在ThisWorkbook中:PrivateSubWorkbook_Open()注册、引用zyg.dllShellRegsvr32/s&VBA.Chr(34)&ThisWorkbook.Path&zyg.dll&VBA.Chr(34),v

6、bHideEndSubPrivateSubWorkbook_BeforeClose(CancelAsBoolean)反注册zyg.dllShellRegsvr32/u/s&VBA.Chr(34)&ThisWorkbook.Path&zyg.dll&VBA.Chr(34),vbHideEndSub2、编写调用zyg.dll中代码的模块:Subtest()DimkkAsNewzyg365zyg365为VB中类模块名称:输入完New后,敲空格键,直接出现选择列表框,从中选择“zyg365”kk可任意命名kk.hongtonghongtong为VB中要执行的模块的名称:输入完kk.后,5直接出现选择列

7、表框,从中选择“zyg365”为你的VB中的过程名称,从列表中选的Setkk=Nothing释放类资源EndSub另一个版本:1、(本帖里)图1就是vb6.0在桌面的图标,双击它2、弹出窗口后,先选择ActiveXDLL(图2的红框),再点击打开(图2的蓝框)3、起个名字(图3蓝色框内文字改为ABC)4、先保存一下,桌面新建个文件夹,点击图3红框里的保存标志,弹出另存为对话框,选择桌面双击刚刚建立的那个文件夹(图4蓝色框)保存(图4红色框)保存5、写代码,模块里输入下面代码Subdef()DimELAsObjectSetEL=GetObject(,Excel.Application)WithE

8、L.ActiveSheet.Cells(1,3)=.Cells(1,1)&.Cells(1,2)EndWithSetEB=NothingEndSub(如图5所示)6、点击文件(图5红色框),在出现的下拉菜单中点击生成工程1.dll(k).(默认保存位置)点击确定至此,Dll就制作完成了四、使用dll1、新建一个excel,A1单元格输入你,B1单元格输入好2、打开VBE,工具引用浏览找到刚刚创建的文件夹点击工程1.dll(图6)点击打开点击确定3、插入一个模块,输入下面代码Subtest()DimaAsNewABCa.defSeta=NothingEndSub4、运行一下代码,C1单元格出现你

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

10、可能被几个应用程序所共用,这样的DLL文件被称为共享DLL文件。DLL文件一般被存放在C:WindowsSystem目录下。因此,DLL文件可以看作是一个程序扩展函数库,成为应用软件程序的外挂接口。就象我们常在程序中用的WINDOWSAPI,就是如此,它是微软提供给程序员的函数宝库,用户只需了解函数功能与调用规则就可以拿来使用,而不用知道也不需要知道具体源码。也正因为此,现在许多VBA开发者在保护其代码时也多采用此法来维护其合法权益。现在开始。假如我们要编这么一段代码:将工作表Sheet1的A1单元格的数值与B1单元格的数值相加填写到C1单元格去(嘿嘿,这是极简单的了,只是用来说明问题),在V

11、BA模块我们可以编写这样的代码:Subtest()OnErrorResumeNextDimi,jAsIntegerWithWorksheets(Sheet1)i=.Cells(1,1).Valuej=.Cells(1,2).Value.Cells(1,3)=i+jEndWithEndSub执行上面的宏,会发现C1单元格自动会出现A1+B1的结果了。下面我们在VB中生成包含以上宏功能的函数(子程序)的DLL文件。打开VB,“文件”-“新建工程”-“ActiveXDLL”,此时会弹出class1模块代码窗口,将如下代码写入:Subtest()OnErrorResumeNextDimi,jAsInt

12、egerDimEBSetEB=GetObject(,Excel.Application)WithEB.ActiveSheeti=.Cells(1,1).Valuej=.Cells(1,2).Value.Cells(1,3)=i+jEndWithSetEB=NothingEndSub在生成DLL之前,注意确保VB里工程-引用里MicrosoftExcel9.0ObjectLibrary前面的勾已打上,再就是正确设定好DLL描述与名称。菜单“工程”-“工程属性”-“工程描述”,里面可以写上你的DLL功能名称或简介或版本号。“视图”-“属性”,设定名称为你在其他开发环境中欲使用的引用名称,如“Myt

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 活动策划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号