封装DLL例子封装DLL例子
看下面常用的VBA界面处理代码,封装为Dll时应该如何改代码,
'需要封装的VBA代码
Sub 恢复系统界面()
On Error Resume Next
With Application
.Caption = "版权所有:GoodFortune From www.ExcelHome.net"
.CommandBars("Worksheet Menu Bar").Enabled = True
.CommandBars("Toolbar List").Enabled = True
.Comman...
封装DLL例子
看下面常用的VBA界面处理代码,封装为Dll时应该如何改代码,
'需要封装的VBA代码
Sub 恢复系统界面()
On Error Resume Next
With Application
.Caption = "版权所有:GoodFortune From www.ExcelHome.net"
.CommandBars("Worksheet Menu Bar").Enabled = True
.CommandBars("Toolbar List").Enabled = True
.CommandBars("Standard").Visible = True
.CommandBars("Formatting").Visible = True
.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("Worksheet Menu Bar").Enabled = False
.CommandBars("Toolbar List").Enabled = False
.CommandBars("Standard").Visible = False
.CommandBars("Formatting").Visible = False
.DisplayFormulaBar = False
End With
With ActiveWindow
.DisplayGridlines = True
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.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("Worksheet Menu Bar").Enabled = True
.CommandBars("Toolbar List").Enabled = True
.CommandBars("Standard").Visible = True
.CommandBars("Formatting").Visible = True
.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("Worksheet Menu Bar").Enabled = False
.CommandBars("Toolbar List").Enabled = False
.CommandBars("Standard").Visible = False
.CommandBars("Formatting").Visible = False
.DisplayFormulaBar = False
End With
With oExcel.ActiveWindow
.DisplayGridlines = True
.DisplayHeadings = False
.DisplayHorizontalScrollBar = False
.DisplayVerticalScrollBar = False
.DisplayWorkbookTabs = False
End With
End Sub
由上可见,封装中需要修改的是将对象变量换成从根一级开始的完整形式,其他部分则不需
要修改。
【总结】VBA封装为Dll的关键有以下两点:
1、在vb中要引用,这样可以使用早期绑定的方法定义变量,加快程序运行速度;
2、变量的传递要从最上层的一级开始,并且要依次传递到需要的层次,因此在VBA中对象要使用完整的形式
示。比如,要使用cell(1,1),则应改为类似这样的形式 Application.Thisworkbook.sheets(1).cell(1,1)。
第3条及以后几条正在思考中.....
1.请问能否用VBA代码实现VB中的引用手工操作,如何实现?
2.如果用VBA代码实现DLL的引用,如何定义变量
3.是不是注册DLL(regsvr32exe /s MyTest.DLL) 之前一定要引用一下这个DLL
本文档为【封装DLL例子】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。