⽤VB.NET (Visual Basic 2010)封装EXCEL VBA 为
DLL_COM 。。。
为了保护⾃⼰⾟⾟苦苦编写的Excel VBA 代码不被盗⽤,我们需要对Excel VBA 代码进⾏加密。通常的做法是利⽤给⼯程设置密码的⽅法实现加密,对于这类加密⽅法,由于存在安全度低、易破解等问题,因此往往起不到应有的效果。通过将Excel VBA 代码封装成DLL 动态链接库,可有效防⽌代码被⾮法查看。
在百度⾥搜索“封装EXCEL VBA”关键字,有很多封装VBA 的教程,但99%是利⽤VB6(Microsoft Visual Basic 6.0)来封装,主要原因是VB6的操作界⾯及语法与Excel 的VBA 具有极⾼的相似度。2002年,随着VB.NET 的引⼊,⼤部分⼈都放弃使⽤VB ⽽选择VB.NET ,VB6终将被淘汰,因此我们必须与时俱进,学习⽤Microsoft Visual Basic 2010封装VBA 。我们可以在VS ⾥建⽴com 类项⽬,把NET 类库的⼀些⽅法重新包装后暴露给VBA 使⽤。
案例:在⼯作表的C1单元格得出A1单元格+B1单元格的值。
visual basic pdf
设计的VBA代码:
⼀、使⽤Microsoft Visual Basic 2010制作DLL⽂件
⼯具及原料:
1、Microsoft Office Excel 2003
2、Microsoft Visual Studio 2010
3、Windows XP 32位操作系统
操作步骤:
1、启动Microsoft Visual Studio 2010,在起始页界⾯点击“新建项⽬”
,如图1所⽰。
图1
1 Sub  Test()
2    On  Error  Resume  Next
3    Range("C1").Value = Range("A1").Value + Range("B1").Value
4 End Sub
2、在弹出的“新建项⽬”对话框选择“类库”,修改名称为“VBADLL”,点击确定,如图2所⽰。
图2
3、在右侧的“解决⽅案资源管理器”视图⾥,到系统默认建⽴的类库“Class1.vb”,右键删除该类库,如图3所⽰。
图3
4、在菜单栏上点击“项⽬”——“添加类”,在弹出的“添加新项”窗⼝⾥往下拉,选择“com类”,并修改名称为ComExcel.vb。然后点击“添加”。如图4所⽰。
图4
5、在菜单栏上点击“项⽬”——“VBADLL属性”,在“VBADLL”窗⼝⾥点击“引⽤”——“添加”,如图5所⽰。
图5
6、在弹出的“添加引⽤”窗⼝⾥点击“COM”,往下拉选择“Microsoft Excel 11.0 Object Library”,然后点击“确定”,如图6所⽰。
图6
注意,不同版本的EXCEL在“添加引⽤”——“COM”窗⼝⾥显⽰的版本号是不同的:
EXCEL2000(Microsoft Excel 9.0 Object Library)
EXCEL2002(Microsoft Excel 10.0 Object Library)
EXCEL2003(Microsoft Excel 11.0 Object Library)
EXCEL2007(Microsoft Excel 12.0 Object Library)
EXCEL2010(Microsoft Excel 14.0 Object Library)
EXCEL2013(Microsoft Excel 15.0 Object Library)
7、按图7所⽰把窗⼝滚动条往下拉,勾选“Microsoft Office Interop”。
图7
8、在右侧的“解决⽅案资源管理器”视图⾥,到第4步添加的类ComExcel.vb,右击弹出的菜单⾥点击“查看代码”,在ComExcel.vb代码窗⼝⾥添加如下代码。
图8
9、如图9所⽰,在⼯具栏上点击“全部保存”按钮(像⼀叠磁盘),在弹出的“保存项⽬”窗⼝⾥选择保存的位置,如本例保存到E盘,⽂件夹名称为VBDLL,然后点击“保存”。 1 Public  Sub  Test()
2
3        On  Error  Resume  Next
4
5        Dim  VbApp As  Excel.Application '定义Excel 对象
6
7        Dim  VbSht As  Excel.Worksheet '定义⼯作表对象
8
9
10
11        VbApp = GetObject (, "Excel.Application")    '当前EXCEL 对象赋值给VbApp
12
13        VbSht = VbApp.ActiveSheet    '使VbSht 表⽰为EXCEL 的当前⼯作表
14
15
16
17        '注意要在对象前加上VbSht 变量以表⽰是EXCEL 当前⼯作表的对象
18
19        VbSht.Range("C1").Value = VbSht.Range("A1").Value + VbSht.Range("B1").Value
20
21    End Sub

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。