VB封装VBA文件
VB封装Excel_VBA成DLL技巧

VB封装Excel_VBA成DLL技巧VB封装Excel_VBA成DLL技巧使用VB6.0在WinXP_sp2、Excel 2000环境下制作、测试通过。
一、启动VB6.0:执行:“文件夹(F)”——“新建(N)”——选择“ActiveX DLL”,如下图1:二、引用:VB 中对Excel的引用执行:“工程(P)”——“引用(N)”——选择所要引用的项目:如下图2Excel 2000中:Microsoft Excel 9.0 Object LibraryMicrosoft Office 9.0 Object LibraryExcel 2003中:Microsoft Excel 11.0 Object LibraryMicrosoft Office 11.0 Object Library三、编写代码:1、将工程默认名称“工程1”,改为“zygtest”,将类模块默认名称“Class1”,改为“zyg365”,2、在类模块的代码编辑区写入代码:如下图3模块名称为“hongtong”,代码如下在VB中编写代码时:要注意以下声名Dim XLAPP As ObjectSet XLAPP = GetObject(, "Excel.Application")代码中引用对象,如SHEET,Cell等,前面要加“XLAPP.”(或按照Sub hongtong() 中的格式编写。
)Sub hongtong()Dim excelApp As New Excel.ApplicationDim excelWorkBook As Excel.WorkbookDim excelWorksheet As Excel.WorksheetSet 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 '退出excelEnd Sub四、工程属性设置:(可以不设置,本步骤可以省略) 为了使自己开发的程序更规范,可以对本工程的属性加以描述:如下图4执行:“工程(P)”——“工程1属性(E)…”(当前工程中为:“zygtest属性(E)…”)五、保存工程、测试、打包生成Dll文件:1、保存:单击保存,保存到一个文件夹中;2、测试:执行工具栏上的“启动”(右向的三角图标)按钮,检查是否存在错误;3、打包生成Dll文件:执行:“文件(F)”——“生成工程1.dll(K)”(当前工程中为:“zygtest.dll”),重命名为“zyg.dll”,至此,Dll文件制作结束。
VBA封装为Dll的例子、方法与总结

VBA封装为Dll的例子、方法与总结制作DLL时,ThisWorkBook中的代码封装方法如下:1、打开VB6,新建Act iveX DLL。
修改“工程”名称和“类模块”名称为需要的名称。
本例中,工程修改为Test DLL,类模块修改为Test。
2、建立引用。
一般需要引用Microsoft Office 11.0 Object Library和Microsoft Excel 11.0 Object Library。
如果VBA代码中还有其他引用,在VB中也要对他们引用。
3、这一步就是具体封装代码了。
在刚才建立好的Test DLL中,将代码放入Test类模块中。
如封装ThisWorkBook中的Open事件:Sub wbk_open(EApp As Excel.Applicat ion, wb As Excel.Workbook, sh As Excel.Worksheet)'--VBA中需要封装的主体代码End Sub其中VBA中的代码为事先做好的要封装的代码,如下面这个例子:'打开工作薄后在当前的工作表A1中输入TestPrivat e Sub workbook_open()Cells(1, 1) = "Test"End Sub封装为DLL的代码为:Sub wbk_open(EApp As Excel.Applicat ion, wb As Excel.Workbook, sh As Excel.Worksheet)Cells(1, 1) = "Test"End sub现在在VB6中生成Dll,到此就完成封装了。
4、在VBA中使用封装的代码首先,在VBA中要引用刚才生成的Test Dll.dll。
然后新建一个模块,在其中定义这样一个变量T:Public T As New Test Dll.Test然后在ThisWorkBook的Open中引用Test Dll中的Test,代码如下:Privat e Sub workbook_open()On Error Resume NextT.wbk_open Applicat ion, ThisWorkbook, Act iveSheetEnd Sub这样每次打开Excel后,就在Sheet1的Cells(1,1)中输入“Test”。
VB程序的打包与发布

附录打包和发布应用程序在创建Visual Basic应用程序后,您可能希望将该程序发布给其他人。
您可以将使用Visual Basic创建的任何应用程序自由地发布给使用Microsoft Windows的任何人。
可以通过磁盘、CD、网络、或者intranet以及Internet这些途径来发布应用程序。
下面以实例57为例介绍打包和展开应用程序。
一、使用向导进行打包1.启动打包和展开向导Visual Basic的打包和展开向导使您能够轻松地为应用程序创建必需的.cab文件以及安装程序。
与其它向导一样,打包和展开向导将提示您输入相应信息,以便创建您所需要的准确配置。
要从Visual Basic中启动打包和展开向导,请按照以下步骤执行:(1)打开想要使用向导来打包或展开的工程。
注意如果您正在使用一个工程组,或已加载了多个工程,则在启动该向导之前,请确保当前的工程就是您要打包或展开的工程。
(2)如果必要,请使用“外接程序管理器”来加载打包和展开向导:从“外接程序”菜单中选择“外接程序管理器”,从该列表中选择“打包和展开向导”,然后单击“确定”,如图1所示。
图1外接程序管理器(3)从“外接程序”菜单中选择“打包和展开向导”来启动该向导,如图2所示。
打包和展开向导提供了三个选项:“打包”选项帮助您将一个工程的文件打包为一个可以展开的.cab文件,而且在某些情况下还要创建一个安装程序来安装该.cab文件。
向导确定需要打包的文件,并引导您作出所必需的选择,以便为您的工程创建一个或多个.cab文件。
“展开”选项帮助您将打好包的应用程序传送到适当的发布媒体,例如软盘、网络共享、或Web站点。
“管理脚本”选项让您可以查看和操作以前使用打包和展开向导时所保存的脚本。
每次使用该向导时,都会保存一个包含您所做的所有选择的脚本。
在以后的过程中,如果您想使用相似的设置值以及做出与原来相同的选择,就可以重新使用这些脚本。
图2打包和展开向导注意:打包和展开向导只能为Visual Basic应用程序创建安装程序和发布媒体。
VB封装到 AUTOcad VBA

B 封裝EXCEL VBA dll1. 安裝VB 精簡版 6.0新建工程選擇activeX DLL, 輸入代碼Option ExplicitSub TestDll(excelApp As Excel.Application)'Dim excelApp As Object'Set excelApp = GetOjbect(, "Excel.Application") Dim excelWorkBook As Excel.WorkbookDim excelWorkSheet As Excel.WorksheetSet excelWorkBook = excelApp.Workbooks(1) Set excelWorkSheet = excelWorkBook.Sheets(1) excelWorkSheet.Cells(1, 1) = "Good" excelApp.Visible = TrueMsgBox "Good Dll"'excelWorkSheet.Cells(3, 3) = "Test Dll2"'excelApp.Visible = ture'excelWorkBook.PrintPreview'excelWorkBook.Saved = True'excelworkbook.close'excelApp.QuitEnd Sub設置引用2. 點擊文件生成dll 并放E:\test.dll 或其他路徑3.註冊/反註冊 DLL(目前測試來看,必須註冊否則會在VBA調用時提示ActiveX無法生成對象)4.註冊成功后,VBA設定引用項目并編寫代碼Option ExplicitSub test()Dim testdll As New VBACls ‘此處為實例化類而非VBAPRJ, 必須new 一個對象,否則報錯Dim myobject As ObjectSet myobject = ActiveWorkbooktestdll.testdll (myobject.Application) ’調用testdll方法,傳入對象為本EXCEL Set testdll = Nothing '清空對象End Sub5.調試,運行后符合預定結果總結:本文僅為VB對VBA dll的簡單測試,對於中間的數據傳輸調用仍需繼續學習1.EXCEL Application 作為對象傳入VB,其他的使用是相同的2.調用DLL時,必須註冊DLL,網上也有將DLL註冊反註冊放在VBA裏面來實現的。
VB_6.0的打包与发布

附录打包和发布应用程序在创建Visual Basic 应用程序后,您可能希望将该程序发布给其他人。
您可以将使用Visual Basic 创建的任何应用程序自由地发布给使用Microsoft Windows 的任何人。
可以通过磁盘、CD、网络、或者intranet 以及Internet这些途径来发布应用程序。
下面以实例57为例介绍打包和展开应用程序。
一、使用向导进行打包1.启动打包和展开向导Visual Basic 的打包和展开向导使您能够轻松地为应用程序创建必需的.cab文件以及安装程序。
与其它向导一样,打包和展开向导将提示您输入相应信息,以便创建您所需要的准确配置。
要从Visual Basic 中启动打包和展开向导,请按照以下步骤执行:(1)打开想要使用向导来打包或展开的工程。
注意如果您正在使用一个工程组,或已加载了多个工程,则在启动该向导之前,请确保当前的工程就是您要打包或展开的工程。
(2)如果必要,请使用“外接程序管理器”来加载打包和展开向导:从“外接程序”菜单中选择“外接程序管理器”,从该列表中选择“打包和展开向导”,然后单击“确定”,如图1所示。
图1 外接程序管理器(3)从“外接程序”菜单中选择“打包和展开向导”来启动该向导,如图2所示。
打包和展开向导提供了三个选项:“打包”选项帮助您将一个工程的文件打包为一个可以展开的.cab 文件,而且在某些情况下还要创建一个安装程序来安装该.cab 文件。
向导确定需要打包的文件,并引导您作出所必需的选择,以便为您的工程创建一个或多个 .cab 文件。
“展开”选项帮助您将打好包的应用程序传送到适当的发布媒体,例如软盘、网络共享、或Web 站点。
“管理脚本”选项让您可以查看和操作以前使用打包和展开向导时所保存的脚本。
每次使用该向导时,都会保存一个包含您所做的所有选择的脚本。
在以后的过程中,如果您想使用相似的设置值以及做出与原来相同的选择,就可以重新使用这些脚本。
VBA程序打包和部署的方法和工具介绍

VBA程序打包和部署的方法和工具介绍VBA(Visual Basic for Applications)是一种用于Microsoft Office应用程序的编程语言,它允许用户使用宏来自动执行各种任务。
当您编写了一个复杂的VBA程序后,将其打包和部署到其他用户的计算机上可能会变得复杂和困难。
本文将介绍一些方法和工具,帮助您轻松地打包和部署VBA程序。
1. 打包VBA程序打包VBA程序是将所有相关文件和依赖项收集到一个单独的文件中,以便在其他计算机上运行。
下面是一些打包VBA程序的方法:a) 使用Microsoft Office自带的打包功能Office中的宏功能可以将所有相关文件打包到一个单独的文件中,以便在其他计算机上运行。
在VBA编辑器中,选择“文件”>“导出文件”,然后选择“导出为文件夹”以将所有相关文件一并导出。
b) 使用第三方打包工具除了Office自带的打包功能外,还有一些第三方工具可以帮助您打包VBA程序。
例如,WinRAR和7-Zip都是常用的打包工具,它们可以将所有相关文件打包为一个压缩文件并进行发布。
2. 部署VBA程序部署VBA程序是将打包后的程序安装到目标计算机上,并确保能够正常运行。
以下是几种常见的部署VBA程序的方法和工具:a) 使用Office自带的安装程序Office自带的安装程序可以帮助您将VBA程序部署到其他计算机上。
在VBA编辑器中,选择“文件”>“导出文件”,然后选择“导出为压缩文件”以将所有相关文件一并导出。
在目标计算机上,运行该压缩文件并按照提示进行安装。
b) 使用Windows InstallerWindows Installer是Windows操作系统的标准安装程序,它可以将应用程序打包为一个独立的安装程序(.msi文件)。
可以使用第三方的安装程序制作工具(如Advanced Installer),将打包的VBA程序制作为一个.msi安装程序,并在目标计算机上运行该.msi文件进行安装。
用VB.NET(Visual

⽤(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⽽选择,VB6终将被淘汰,因此我们必须与时俱进,学习⽤Microsoft Visual Basic 2010封装VBA。
我们可以在VS⾥建⽴com类项⽬,把NET类库的⼀些⽅法重新包装后暴露给VBA使⽤。
案例:在⼯作表的C1单元格得出A1单元格+B1单元格的值。
设计的VBA代码:1Sub Test()2On Error Resume Next3 Range("C1").Value = Range("A1").Value + Range("B1").Value4End Sub⼀、使⽤Microsoft Visual Basic 2010制作DLL⽂件⼯具及原料:1、Microsoft Office Excel 20032、Microsoft Visual Studio 20103、Windows XP 32位操作系统操作步骤:1、启动Microsoft Visual Studio 2010,在起始页界⾯点击“新建项⽬”,如图1所⽰。
图12、在弹出的“新建项⽬”对话框选择“类库”,修改名称为“VBADLL”,点击确定,如图2所⽰。
在-Windows-7-环境下封装-Excel-VBA-代码

在Windows 7 环境下封装Excel VBA 代码一、安装Visual Basic 6.0在Windows 7 下安装Visual Basic 6.0安装会遇到一些兼容性问题,而Windows XP 则很顺利。
当某些程序必须要在Windows 7 下调试的时候,就一定要面对Windows 7 了。
(一)进入安装文件夹,点击“Setup.exe”运行Visual Basic 6.0安装程序。
(二)出现兼容性问题提示,单击“运行程序”。
(三)进入Visual Basic 6.0安装向导,单击“下一步”。
(四)出现“最终用户许可协议”对话框,选择“接受协议”,单击“下一步”。
(五)进入“产品和用户ID”对话框,在“请输入产品的ID号”处输入ID号,全部输入0至9中的任意一个,然后单击“下一步”。
(六)保持默认选择“安装Visual Basic 6.0中文企业版”,单击“下一步”。
(七)选择公用安装文件夹,采取默认或自定义均可。
然后单击“下一步”(八)再次出现兼容性问题提示,直接单击“运行程序”。
(九)进入Visual Basic 6.0 安装程序,单击“继续”后,单击“确定”。
(十)出现“发现了旧版本的Visual SourceSafe”提示,选择“是”(十一)在选择安装类型对话框中,封装Excel VBA 代码选择“典型安装”即可。
(十二)出现“使用新的Visual SourceSafe数据库格式”提示,选择“是”(十三)开始Visual Basic 6.0安装。
(十四)安装完毕,单击“重新启动Windows”。
重新启动Windows后,自动弹出下面的对话框。
如果需要帮助文档,可单击“下一步”继续安装MSDN,对于Visual Basic 6.0的初学者,建议安装。
在安装MSDN 过程中,插入MSDN安装盘按照提示进行安装。
如果不需要帮助文档,单击“退出”,Visual Basic 6.0安装完成。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VB中的类开发对程序员和编程爱好者来说,VB中类的技术是学习中的一个难点,在大型软件的开发过程中,模块(Moudle)、控件(Activemoudle)构成了系统化、高效化的软件工程,而类的技术是控件和链接库技术的基础,因此掌握类的理论和编程方法是非常有意义的。
(一)类的基本定义和应用概述;类是包含了方法、属性、数据成员的高级代码模块,它既在模块的范畴之内,又是一个没有图形界面的Activeocx,程序员可以象使用控件一样使用它,但却不能看到它,值得注意的是,类是不能继承的。
类能够使我们高效的完成对某一个或者某几个特定的对象的复杂操作,对象的动作就是类的方法,对象的属性就是类的属性过程。
相对而言,如果编程的对象是一组事物,那么,我们采用标准模块的方式是非常合适的,在下列两种情况下,应该使用类进行代码处理:(1)创建大量性质相近的对象;(2)提高代码的封装性。
类的创建非常简单,在进行代码编写的时候,在“工程”菜单中选择“添加类模块”项目,就可以添加一个空白的类。
类文件一般以.cls作为扩展名保存。
(二)类的方法的实现;类的方法类似于动态链接库的接口函数,它能够接受其他窗体代码的指定类型参数,并且传递到类中。
一般来说类的方法是能够指定是否有返回值的。
它在类中通常是一个public过程。
请看下面的代码示例,它使一个密码框拒绝非字母的输入:(1)类cls的代码;Option Explicit'变量检查Private WithEvents mytxt As TextBox'本类中的方法接受和控制一个text密码框Dim isNUM As Boolean'类的模块级变量Public Sub Attach(itTEXT As TextBox)'接受外部变量到mytxt中Set mytxt = itTEXTEnd SubPrivate Sub mytxt_KeyUp(KeyCode As Integer, Shift AsInteger)isNUM = (KeyCode > = 65) And (KeyCode < = 90)'测试密码框的键盘输入是否是英文字母If isNUM = False ThenBeepmytxt.Text = ""'如果输入不是英文字母则响铃并且清空密码框内容MsgBox "非法字符输入!"End IfDebug.Print mytxt.Text'调试输出密码框内容End Sub'类的代码结束(2)类的引用;已经编写完成的类可以经过两种格式进行引用,第一种方式:Private(public 或者dim) myCLS(指定的类名)As Newcls(编写完成的类名);第二种方式较多用于程序编写风格较“老”的程序员:首先在窗体代码中进行模块级声明――Dim myCLS Ascls,然后在具体代码过程中进行具体定义―― Set mycls = Newcls。
这两种方式的效率和代码的简洁性方面可能会有所差别,但在笔者的编程实践中,并没有什么特别的感觉,不过我较多使用第一种方式,因为它书写起来更加方便。
另外,在代码结束的时候,使用Set myCLS = Nothing来取消类的资源占用是一种非常好的编程习惯。
在窗体form1中(窗体有一个密码框控件text1,passworldchar="*")添加以下代码:Option ExplicitPrivate myCLS As New cls'引用clsPrivate Sub Form_Load()myCLS.Attach Text1'启动类End Sub'在代码结束时记得释放资源Private Sub Form_Unload(Cancel AsInteger)Set myCLS = NothingEndEnd Sub本文代码展示了类的方法的代码编写过程和调用方式(尽管它和类的事件非常相似),它的效果是,如果密码框中被输入了非字母,则系统振铃,并删除密码框中的原来的数据――在一定程度上保护密码。
类的方法可以不需要任何参数,这一点类似一个public的函数或者过程,它也是类中使用最广泛的。
在下一篇文章中我将讨论,如何使用类的属性、事件和方法进行综合编程。
我们讨论了类的理论、类的创建和类的方法的编程实践,实际上,类之所以能够在软件工程中广泛应用,最主要的一点是它可以非常方便的封装许多编程需要的属性,这不仅使程序员在一定程度上克服控件(ocx)和链接库(dll)设计和调试中的复杂性,而且能够提高程序代码的简洁和高效性――本文将讨论完整的类的编程,包括方法、属性和基本事件。
(一)类的属性的特征和定义;类似于标准控件的属性,类的属性允许用户在指定的数据范围内进行赋值,这些值被类内的各个代码部分所共享。
属性的获得和传递需要经过Property Let和Property Get语句进行编程,当然,我们首先需要在类中进行全局或者模块级的相应变量定义。
(二)事件的属性和基本定义;和窗体的事件类似,类也有两个基本的事件,Class_Initialize(类加载时触发)和Class_Terminate(类卸载时触发),这两个事件都是private的。
实际上,我们完全可以忽略这两个事件――只要你记得完善类的方法和属性。
类同样可以定义自己的事件,它和方法的程序编写格式类似,只不过需要WithEvents关键字进行参数声明,而且事件不能有任何命名参数或者可选参数,它也没有返回值。
实际上,结构良好的方法和属性完全可以替代结构复杂的类的事件。
(三)类的方法、事件和属性的编程实例;本程序的设计目的是,通过类控制窗体中文本框的内容的全部大写、小写和逆向排序转化。
为了方便代码的书写和调用,我在类中引用了枚举的编程方法。
以下代码在类Class1:Option ExplicitPrivate WithEvents myTXT AsTextBox'方法的参数接口Public Enum sTYLELcaseit'小写属性Lbigit'大写属性Nlogoit'逆向排序属性End Enum'自定义枚举,用来实现属性的自动赋值Private mvarBiaozhi As sTYLE'实现枚举常量的连接Public Function dONE() As String''DONE方法用来根据指定的枚举属性,对'窗体文本框进行相应的字符转化操作'并且返回转化后的字符串If mvarBiaozhi = Nlogoit ThendONE = StrReverse(myTXT)'逆向排序ElseIf mvarBiaozhi = Lcaseit ThendONE = LCase(myTXT)'强制小写转化ElsedONE = UCase(myTXT)'强制大写转化End IfEnd Function'DONE方法结束Public Property Let Biaozhi(ByVal vData As sTYLE)'获得属性的被赋的值mvarBiaozhi = vDataEnd PropertyPublic Property Get Biaozhi() As sTYLE'传递属性值到类中Set Biaozhi = mvarBiaozhiEnd PropertyPublic Sub Attach(itTEXT As TextBox)'连接类的方法Set myTXT = itTEXTEnd SubPrivate Sub Class_Initialize()'本事件在类倍加载时激活MsgBox "你好!本程序向您展示使用类的方法、属性、事件进行编程的技术!" End SubPrivate Sub Class_Terminate()'本事件在类被卸载时激活MsgBox "你好!记得在Class_Terminate中填写对象撤销后的代码!"End Sub'类的代码全部结束(四)窗体代码的引用编程;在窗体FORM1中添加文本控件TEXT1、下拉列表控件COMBO1、命令按钮COMMAND1(CAPTION="开始转化"),调整三个控件到适当位置。
Dim myT As New Class1'类的引用Private Sub Form_Load()Combo1.ClearCombo1.AddItem "字符串大写转化"Combo1.AddItem "字符串小写转化"Combo1.AddItem "字符串逆向排序"Combo1.ListIndex = 0'在列表框中添加属性选项End SubPrivate Sub Command1_Click()'当命令按钮按下时激活类myT.Attach Text1'方法参数联接Select Case Combo1.ListIndexCase 0myT.Biaozhi = LbigitCase 1myT.Biaozhi = LcaseitCase 2myT.Biaozhi = NlogoitEnd Select'根据列表框的选择,给类的Biaozhi属性赋值'注意,在编程环境中,上述属性值自动添加Text1.Text = myT.dONE'返回排序结束后的字符串End SubPrivate Sub Form_Unload(Cancel As Integer)Set myT = NothingEnd'良好的编程习惯End Sub怎么样,我们的代码看起来如此的简洁,这种感觉就象是在使用一个控件,不仅可以随心所欲的调用,而且方便的使用了vb的自动提示功能。
(五)关于类的编程技术的总结;严格的说,类是vb编程中的一个相当有用的技术,同样也是学习和掌握中的难点,类在大型软件工程中应用是非常广泛和卓有成效的,但是,在小型软件开发中,为了提高软件的效率和代码的清晰度,应该避免使用较多的类模块,控件和联接库,取代以标准模块。
本文所示例的代码比较简单,却覆盖了关于模块编程技术的方方面面,希望初学者能够有所借鉴,也希望程序员能够共同探讨。
我们应该相信,无论多么复杂的高楼大厦都是由普普通通的方砖堆砌而成的,同样,无论所么复杂的软件工程都是由基本的程序语句所构成的,编程爱好者、程序员和分析员的区别只是在于,用同样的程序语句构建的程序的不同而已DLL文件制作与在VBA调用初级进阶本文用一简例来演示如何将一正常在VBA中运行的代码移植到VB制作的DLL中去,并介绍如何在VBA中进行调用。