这两天学习了关于创建COM加载宏的知识,将学习成果进行了整理,供大家参考. 使用VB6创建COM加载宏 摘要:本文通过示例详细描述了如何使用VB6创建COM加载宏的过程,以及如何在Excel中加载和使用。 创建一个COM加载宏的步骤 1、打开VB6应用程序,在“新建工程”中选择“外接程序”,打开新工程。 2、在右侧工程资源管理器窗口中将会有一个名为frmAddin的窗体和一个名为Connect的设计器对象。移除frmAddin窗体,然后对Connect设计器对象进行设置。 双击设计器对象,出现一个设计器窗体,窗体中有如下字段及相应的文本框: • 外接程序显示名称 – 填写加载宏的名字。 • 外接程序描述 – 描述你所创建的加载宏的作用和功能。 • 应用程序 – 使用你所创建的加载宏的应用程序。在这里,选择Microsoft Excel。 • 应用程序版本 – 使用你所创建的加载宏的应用程序版本。当在应用程序文本框中选择了Microsoft Excel后,该文本框自动出现Microsoft Excel 11.0。 • 初始化加载行为 – 当应用程序开启时,是否自动装载该加载宏,有四个选项。若设置这为Startup,那么当Excel开始时将装载该加载宏;若设置为Load on demand,则在Excel中需要时再装载该加载宏。 3、添加对Excel的引用。选择菜单“工程——引用”命令,在出现的“引用”对话框中选中Microsoft Excel 11.0 Object Liabrary前的复选框。 4、设置工程属性。选择菜单“工程——MyAddIn属性”命令,或在工程资源管理器窗口中击右键选择“MyAddIn属性”命令,在出现的工程属性对话框中设置工程名称和工程描述。 5、编辑Connect设计器代码。在Connect设计器对象上右击并选择“查看代码”或者点选Connect设计器后单击窗口顶部的“查看代码”按钮,将出现VB自动生成的代码。删除其中的代码,只保留OnConnection过程和OnDisconnection过程,用于在应用程序中装载和卸载加载宏,并在其中添加自已实现加载宏功能所需要的代码。在本示例中,Connect设计器中的最终代码如下: ‘**************************************** Option Explicit Private Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant) '设置应用程序变量 Set xlApp = Application '设置自已的菜单的子程序 CreateToolbarButtons End Sub Private Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant) '释放占用的内存 Set xlApp = Nothing '移除自已的菜单的子程序 RemoveToolbarButtons End Sub ‘**************************************** 6、选择菜单“工程——添加模块”命令,添加一个标准的模块并添加相应的代码。在本示例中,该标准模块的代码如下: ‘**************************************** ‘声明变量、类实例和集合 Public xlApp As Excel.Application Dim ButtonEvent As cbEvents Dim ButtonEvents As Collection '定义自已菜单的子程序 Public Sub CreateToolbarButtons() '为了确保只添加按钮一次,先移除它们 RemoveToolbarButtons '声明变量 Dim cbBar As Office.CommandBar Dim btNew As Office.CommandBarButton '创建一个新的集合 Set ButtonEvents = New Collection '查找excel中的工作表菜单栏(带有文件,编辑、视图等命令) Set cbBar = xlApp.CommandBars("Worksheet Menu Bar") '添加一个新按钮到工具菜单 Set btNew = cbBar.FindControl(Id:=30007).Controls.Add(msoControlButton, , , , True) With btNew .OnAction = "Sub1" '设置一个唯一的标签,使我们自定义控件在后面容易找到或删除 .Tag = "COMAddinTest" '设置提示文本 .ToolTipText = "Calls Sub1" '设置显示在菜单中的标题 .Caption = "Sub1" End With '获取cbevents类中的一个新实例 Set ButtonEvent = New cbEvents '将它指定给我们所创建的按钮 Set ButtonEvent.cbBtn = btNew ButtonEvents.Add ButtonEvent '添加另一个按钮 Set btNew = cbBar.FindControl(Id:=30007).Controls.Add(msoControlButton, , , , True) With btNew .OnAction = "Sub2" '设置一个唯一的标签,使我们自定义控件在后面容易找到或删除 .Tag = "COMAddinTest" '设置提示文本 .ToolTipText = "Calls Sub2" '设置显示在菜单中的标题 .Caption = "Sub2" End With '获取cbevents类中的一个新实例 Set ButtonEvent = New cbEvents '将它指定给我们所创建的按钮 Set ButtonEvent.cbBtn = btNew ButtonEvents.Add ButtonEvent End Sub '删除自已定义的菜单的子程序 Public Sub RemoveToolbarButtons() Dim cbBar As CommandBar Dim cbCtr As CommandBarControl '忽略错误 On Error Resume Next '需要从命令条中移除按钮 '首先找到该按钮 Set cbBar = xlApp.CommandBars("Worksheet Menu Bar") '运用我们所设置的标签查找控件 Set cbCtr = cbBar.FindControl(, , "COMAddinTest") While Not cbCtr Is Nothing '删除 cbCtr.Delete Set cbCtr = cbBar.FindControl(, , "COMAddinTest") Wend '恢复占用的内存 Set ButtonEvents = Nothing Set ButtonEvent = Nothing End Sub '示例子过程 Sub sub1() MsgBox "Hello!" End Sub '示例子过程 Sub sub2() MsgBox "Hi!" End Sub ‘**************************************** 7、创建一个类模块来处理菜单栏事件。选择菜单“工程——添加类模块”,并命名为cbEvents,然后添加如下代码: ‘**************************************** Public WithEvents cbBtn As CommandBarButton Private Sub cbBtn_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean) '忽略产生的任何错误 On Error Resume Next '检查OnAction属性并执行相应的程序 Select Case Ctrl.OnAction Case "Sub1" sub1 Case "Sub2" sub2 End Select '查找指定给OnAction属性的程序删除Excel CancelDefault = True End Sub ‘**************************************** 8、生成dll文件。选择菜单“文件——生成dll”命令,将工程生成dll文件。 安装Excel COM加载宏 注册Dll (1) Dll文件需要注册到Windows中以便能够运行。如果是在VB6中生成Dll文件,将在所创建该加载宏的计算机上自动注册。 (2)当然,也可以手工注册。点击屏幕左下角“开始”按钮,选择“运行”,在出现的“运行”对话框中的“打开”文本框中输入“regsvr32.exe <dllfilename>。 (3)若要移除或删除dll,先要注销它,即在“运行”对话框中使用regsvr32.exe命令并附加/u参数实现。 在Excel中安装加载宏 (1)若在VB6中创建该加载宏时,在设计器中设置初始化加载行为时选择“Startup”,则在装载Excel时,加载宏会自动装载并运行。 (2)如果没有选择“Startup”,则需要手动装载。选择菜单“工具——自定义”,在出现的“自定义”对话框中,选取“命令”标签,选择左侧“类别”中的“工具”项,在右侧中找到“COM加载项…”,拖动它到菜单栏中,关闭“自定义”对话框。此时,点击菜单栏中的“COM加载项…”命令,出现“COM加载项”对话框,刚才所生成的加载宏已出现在“可用加载项”列表中,选中或取消该加载宏前面的复选框来装载或卸载加载宏。 示例文档见testCOM加载宏文件夹中的test(Visual Basic Project)文件。
rQhZVafw.rar
(25.53 KB, 下载次数: 1471)
(By fanjy in 2006-6-26)
[此贴子已经被作者于2006-6-26 20:07:54编辑过] |