VB封装Excel_VBA成DLL技巧使用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
另一个版本:
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的简单示例全部完成
用DLL封装VBA
本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA 中进行调用。这仅仅是最初级的介绍,希望能对此内容想了解的版友们一些帮助,