VBA封装为Dll的例子

2020-06-05 08:16

VBA封装为Dll的例子、方法与总结

制作DLL时,ThisWorkBook中的代码封装方法如下:

1、打开VB6,新建ActiveX DLL。修改“工程”名称和“类模块”名称为需要的名称。本例中,工程修改为TestDLL,类模块修改为Test。

2、建立引用。一般需要引用Microsoft Office 11.0 Object Library和Microsoft Excel 11.0 Object Library。如果VBA代码中还有其他引用,在VB中也要对他们引用。 3、这一步就是具体封装代码了。

在刚才建立好的TestDLL中,将代码放入Test类模块中。 如封装ThisWorkBook中的Open事件:

Sub wbk_open(EApp As Excel.Application, wb As Excel.Workbook, sh As Excel.Worksheet) '--VBA中需要封装的主体代码 End Sub

其中VBA中的代码为事先做好的要封装的代码,如下面这个例子: '打开工作薄后在当前的工作表A1中输入Test Private Sub workbook_open() Cells(1, 1) = \End Sub

封装为DLL的代码为:

Sub wbk_open(EApp As Excel.Application, wb As Excel.Workbook, sh As Excel.Worksheet) Cells(1, 1) = \End sub

现在在VB6中生成Dll,到此就完成封装了。 4、在VBA中使用封装的代码

首先,在VBA中要引用刚才生成的TestDll.dll。 然后新建一个模块,在其中定义这样一个变量T: Public T As New TestDll.Test

然后在ThisWorkBook的Open中引用TestDll中的Test,代码如下: Private Sub workbook_open() On Error Resume Next

T.wbk_open Application, ThisWorkbook, ActiveSheet End Sub

这样每次打开Excel后,就在Sheet1的Cells(1,1)中输入“Test”。

当然,如果你想在第2张工作表的A1中输入Test,那么可以这样用: Private Sub workbook_open() On Error Resume Next

T.wbk_open Application, ThisWorkbook, Sheets(2) End Sub

以上就是代码封装的全过程,需要注意的是变量的传递要互相对应。

上面示例中的封装代码是用3个变量传递的,如果只用1个变量传递,代码如下: '封装为DLL的代码为:

Sub wbk_open(sh As Excel.Worksheet) Cells(1, 1) = \End sub

'ThisWorkBook中使用Dll的代码为 Private Sub workbook_open() On Error Resume Next

Page 1 of 3

T.wbk_open ActiveSheet End Sub

Dll文件和Test文件,测试时请重新引用TestDll.dll文件:

【总结】VBA封装为Dll的关键有以下两点:

1、在vb中要引用,这样可以使用早期绑定的方法定义变量,加快程序运行速度;

2、变量的传递要从最上层的一级开始,并且要依次传递到需要的层次,因此在VBA中对象要使用完整的形式表示。比如,要使用cell(1,1),则应改为类似这样的形式 Application.Thisworkbook.sheets(1).cell(1,1)。 第3条及以后几条正在思考中.....

看看下面常用的VBA界面处理代码,封装为Dll时应该如何改代码? '需要封装的VBA代码 Sub 恢复系统界面()

On Error Resume Next With Application

.Caption = \版权所有:GoodFortune From www.ExcelHome.net\ .CommandBars(\ .CommandBars(\ .CommandBars(\ .CommandBars(\ .DisplayFormulaBar = True End With

With ActiveWindow

.DisplayGridlines = True .DisplayHeadings = True

.DisplayHorizontalScrollBar = True .DisplayVerticalScrollBar = True .DisplayWorkbookTabs = True End With End Sub

Sub 隐藏系统界面()

On Error Resume Next With Application

.CommandBars(\ .CommandBars(\ .CommandBars(\ .CommandBars(\ .DisplayFormulaBar = False End With

With ActiveWindow

.DisplayGridlines = True .DisplayHeadings = False

.DisplayHorizontalScrollBar = False

Page 2 of 3

.DisplayVerticalScrollBar = False .DisplayWorkbookTabs = False End With End Sub 首先,分析一下,上面的VBA代码中有几个需要传递的变量(或者先分析“对象”),一个是Application,一个是ActiveWindow,其中ActiveWindow是Application的下一级对象,因此,按第2条原则,从最上一层开始,完整形式为Application.ActiveWindow,因此上面的代码可以改成如下的形式,用一个变量传递就可以了。 '封装为Dll的代码

Sub 恢复系统界面(oExcel as Excel.Application) On Error Resume Next With oExcel

.Caption = \版权所有:GoodFortune From www.ExcelHome.net\ .CommandBars(\ .CommandBars(\ .CommandBars(\ .CommandBars(\ .DisplayFormulaBar = True End With

With oExcel.ActiveWindow .DisplayGridlines = True .DisplayHeadings = True

.DisplayHorizontalScrollBar = True .DisplayVerticalScrollBar = True .DisplayWorkbookTabs = True End With End Sub

Sub 隐藏系统界面(oExcel as Excel.Application) On Error Resume Next With oExcel

.CommandBars(\ .CommandBars(\ .CommandBars(\ .CommandBars(\ .DisplayFormulaBar = False End With

With oExcel.ActiveWindow .DisplayGridlines = True .DisplayHeadings = False

.DisplayHorizontalScrollBar = False .DisplayVerticalScrollBar = False .DisplayWorkbookTabs = False End With End Sub

由上可见,封装中需要修改的是将对象变量换成从根一级开始的完整形式,其他部分则不需要修改。 上面的例子是我学习中的经验总结,拿出来分享,虽然写的不好,但却是自己一步一步琢磨的,希望能抛砖引玉,请朋友们多指点。

Page 3 of 3


VBA封装为Dll的例子.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:机电控制与可编程序控制器技术 -

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: