excel VBA 封装 Visual Basic for Applications (简称 VBA )是新一代标准宏语言, 是基于 Visual Basic for Windows 发展而来的。 VBA 提供了面向对象的程序设计方法, 提供了相当完整的程序设计语言。 VBA 易于学习掌握, 用户可以容易地将日常工作转换为 VBA 程序代码, 使工作自动化。但是 VBA 在代码的保护上却存在着缺陷。如果不对 VBA 工程设置密码保护, 代码很容易被人浏览乃至窃取。而且即使设置了密码保护, 也很容易被人破解。笔者就曾用破解工具 officekey 轻松地破解了他人设置的密码保护, 不费吹灰之力便浏览了其中的代码, 而且从中发现了文档保护密码。可见, 要想保护自己的 VBA 代码, 仅仅设置密码保护是不够的。我们知道, Visual C++ 、 Visual Basic 和 C++ Builder 以及 Delphi 等编译器所编译出来的程序不容易被人破解(相对来说), 这是因为代码被编译成了可执行文件或者动态链接库文件。那么,我们是否可以将 VBA 代码封装到动态链接库文件中,然后用 Word 调用呢?回答是肯定的。而且这样做还有一个好处, 即可以加快代码的运行速度。一、将 VBA 代码封装成动态链接库假如我们已经写好了一个 VBA 工程,而且运行无误。 1. 建立 VB 工程及一般性操作首先,我们需要两种工具,其中当然包括 Microsoft Word , 另外一种是 Microsoft Basic 。打开 Microsoft Basic ,在“新建工程”中选取“ ActiveX DLL ”,新建一个工程。在属性窗口中将工程名改为 VBAPrj , 类模块名改为 VBACls 。然后在“工程”菜单下打开“引用”, 选取“ Microsoft Office Object Library ”——这一步很是关键, 切不可遗漏, 然后保存工程。下面我们所做的是向工程内添加代码。将 VBA 工程中的一个名为 Test 过程的代码选定后复制,然后切换到 VB 编辑器,选中 VB 的工程管理器中的类模块 VBACls ,将代码粘贴至代码编辑窗口中,于是这段代码便成了类模块 VBACls 一个方法,然后将工程编译生成 dll 文件(如果编译成功的话)。在 Wor d中, 我们就可以通过类模块 VBACl s 建立的对象来调用此方法(具体怎么调用, 我们将后面介绍)。当然, 我们可以继续向工程里添加代码。 2. 修改代码虽然 VBA 源于 VB ,但是两者毕竟存在着一些差异。因此,需要对转移到 VB 中的 VBA 代码做一些必要的修改。(1) 修改 VBA 代码中所特有类型的对象。如果我们所添加的代码里有 VBA 所特有类型——如 Document 、 Rang 、 BookMark 等所建立的对象,编译时会提示错误, 因为 VB 不能够识别这些对象。此时修改的方法是,将这些对象作为过程或函数的参数进行传递。需要注意的是, 这些参数的类型都一律设为 Object 。例如,我们在过程 Test 中要访问对象 ThisDocument ,但是 VB 无法识别 ThisDocument ,于是我们就为过程 test 添加一个参数 Doc 来传递 T
excel VBA 封装 来自淘豆网m.daumloan.com转载请标明出处.