使用VB6创建COM加载宏

    技术2022-05-11  56

    使用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 ExplicitPrivate Sub AddinInstance_OnConnection(ByVal Application As Object, ByVal ConnectMode As AddInDesignerObjects.ext_ConnectMode, ByVal AddInInst As Object, custom() As Variant)   '设置应用程序变量   Set xlApp = Application   '设置自已的菜单的子程序   CreateToolbarButtonsEnd SubPrivate Sub AddinInstance_OnDisconnection(ByVal RemoveMode As AddInDesignerObjects.ext_DisconnectMode, custom() As Variant)  '释放占用的内存   Set xlApp = Nothing  '移除自已的菜单的子程序   RemoveToolbarButtonsEnd Sub‘****************************************6、选择菜单“工程——添加模块”命令,添加一个标准的模块并添加相应的代码。在本示例中,该标准模块的代码如下:‘****************************************‘声明变量、类实例和集合Public xlApp As Excel.ApplicationDim ButtonEvent As cbEventsDim 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 = btNewButtonEvents.Add ButtonEventEnd 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 = NothingEnd Sub

    '示例子过程Sub sub1()  MsgBox "Hello!"End Sub

    '示例子过程Sub sub2()  MsgBox "Hi!"End Sub‘****************************************7、创建一个类模块来处理菜单栏事件。选择菜单“工程——添加类模块”,并命名为cbEvents,然后添加如下代码:‘****************************************Public WithEvents cbBtn As CommandBarButtonPrivate 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 = TrueEnd 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)文件。UploadFiles/2006-6/626783332.rar(By fanjy in 2006-6-26)

     

    最新回复(0)