使用VB6编写COM加载项.docx

上传人:b****8 文档编号:9203651 上传时间:2023-02-03 格式:DOCX 页数:15 大小:341.93KB
下载 相关 举报
使用VB6编写COM加载项.docx_第1页
第1页 / 共15页
使用VB6编写COM加载项.docx_第2页
第2页 / 共15页
使用VB6编写COM加载项.docx_第3页
第3页 / 共15页
使用VB6编写COM加载项.docx_第4页
第4页 / 共15页
使用VB6编写COM加载项.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

使用VB6编写COM加载项.docx

《使用VB6编写COM加载项.docx》由会员分享,可在线阅读,更多相关《使用VB6编写COM加载项.docx(15页珍藏版)》请在冰豆网上搜索。

使用VB6编写COM加载项.docx

使用VB6编写COM加载项

使用VB6编写COM加载项

一个简单的COM加载项示例

步骤1:

启动VB6,在“新建工程”对话框中选择“外接程序”,单击“打开”按钮,如下图。

VB6将自动创建一个名为MyAddIn的工程,包含一个名为frmAddIn的窗体和一个名为Connect的Designer类变量。

步骤2:

将工程名称修改为MyFirstCOMAddIn。

步骤3:

删除默认的窗体frmAddIn。

步骤4:

删除Connect中的全部代码。

步骤5:

在工程资源管理器窗口双击Connect打开加载项设计器窗口,并对其进行相应的设置,如下图所示。

如上图所示,在“通用”选项卡中设置COM加载项在Excel的COM加载项对话框中显示的名称及相应的描述。

设置“应用程序”为MicrosoftExcel,根据用户计算机上安装的Excel选择相应的应用程序版本,这里选择“MicrosoftExcel14.0”,即Excel2010。

选择初始化加载行为为“Startup”,即在Excel启动时运行该加载项,还可以选择其它的加载选项。

说明:

外接程序显示名称:

填写加载项的名字

外接程序描述:

描述所创建的加载项的作用和功能

应用程序:

使用所创建的加载项的应用程序。

应用程序版本:

使用所创建的加载项的应用程序的版本。

初始化加载行为:

当应用程序开启时,是否自动装载该加载项,有四个选项。

若设置为Startup,则Excel启动时装载该加载项;若设置为Loadondemand,则在Excel中需要使用该加载项时再装载该加载项。

步骤6:

在工程资源管理器窗口的Connect中单击右键,选择“查看代码”,打开代码窗口。

步骤7:

在代码窗口顶部左侧的对象列表框中选择AddinInstance对象,在右侧的事件列表框中选择OnConnection事件,输入的代码如下:

PrivateSubAddinInstance_OnConnection(ByValApplicationAsObject,_

ByValConnectModeAsAddInDesignerObjects.ext_ConnectMode,_

ByValAddInInstAsObject,custom()AsVariant)

MsgBox"这是使用VB6创建的COM加载项."

EndSub

然后,再在事件列表框中选择OnDisconnection事件,输入的代码如下:

PrivateSubAddinInstance_OnDisconnection(ByValRemoveModeAsAddInDesignerObjects.ext_DisconnectMode,_

custom()AsVariant)

MsgBox"Excel工作簿将要关闭,里面的数据已经保存了吗?

"

EndSub

步骤8:

保存所有的工程文件。

步骤9:

单击菜单“文件——生成MyFirstCOMAddIn.dll”。

至此,这个简单的COM加载项编写完成。

步骤10:

打开Excel2010,将会出现一个消息框,显示在COM加载项的OnConnection事件中设置的消息,如下图所示。

关闭Excel2010时,将会出现一个消息框,显示在COM加载项的OnDisconnection事件中设置的消息,如下图所示。

这个加载项之所以会在Excel2010会话开启时运行,是因为我们在设置加载项时选择了选项“Startup”,即在Excel启动时加载该加载项。

单击“开发工具”选项卡“加载项”组中的“COM加载项”,显示“COM加载项”对话框,列出了所有可用的COM加载项,如下图所示。

在该对话框中,可以取消某加载项前的复选,使其不可用,或者通过“删除”按钮删除该加载项。

一个菜单COM加载项示例

步骤1:

启动VB6,在“新建工程”中选择“外接程序”,打开新工程。

步骤2:

在工程资源管理器中将会有一个名为frmAddIn的窗体和一个名为Connect的设计器对象,如下图所示。

移除工程资源管理器窗口中的frmAddIn窗体,设置Connect设计器对象。

步骤3:

双击设计器对象,出现一个设计器窗体,对其进行设置,如下图所示。

步骤4:

添加对Excel的引用。

选择菜单“工程——引用”,在“引用”对话框中选择“MicrosoftExcel14.0ObjectLibrary”前的复选框。

步骤5:

设置工程属性。

选择菜单“工程——MyAddIn属性”,或在工程资源管理器中单击右键,选择“MyAddIn属性”命令,在“工程属性”对话框中设置工程名称和工程描述。

步骤6:

编写Connect设计器代码。

在Connect设计器对象上右击并选择“查看代码”或者单击Connect设计器后再单击窗口顶部的“查看代码”按钮,出现VB自动生成的代码。

删除其中的代码,只保留OnConnection过程和OnDisconnection过程,用于在应用程序中装载和卸载加载项,并在其中添加自已需要实现的功能的代码。

在本示例中,Connect设计器中的代码如下:

'------------------------------------------------------

'thismethodaddstheAdd-IntoVB

'------------------------------------------------------

PrivateSubAddinInstance_OnConnection(ByValApplicationAsObject,_

ByValConnectModeAsAddInDesignerObjects.ext_ConnectMode,_

ByValAddInInstAsObject,custom()AsVariant)

'设置应用程序变量

SetxlApp=Application

'设置自定义菜单子程序

CreateToolBarButtons

EndSub

 

'------------------------------------------------------

'thismethodremovestheAdd-InfromVB

'------------------------------------------------------

PrivateSubAddinInstance_OnDisconnection(ByValRemoveModeAsAddInDesignerObjects.ext_DisconnectMode,_

custom()AsVariant)

'释放占用的存

SetxlApp=Nothing

'移除自定义的菜单子程序

RemoveToolBarButtons

EndSub

步骤7:

选择菜单“工程——添加模块”命令,添加一个标准的模块并添加相应的代码。

'声明变量、类实例和集合

PublicxlAppAsExcel.Application

DimButtonEventAscbEvents

DimButtonEventsAsCollection

'定义自已菜单的子程序

PublicSubCreateToolBarButtons()

'为了确保只添加按钮一次,先移除它们

RemoveToolBarButtons

'声明变量

DimcbBarAsOffice.CommandBar

DimbtNewAsOffice.CommandBarButton

'创建一个新的集合

SetButtonEvents=NewCollection

'查找工作表菜单栏(带有文件、编辑、视图等命令)

SetcbBar=xlApp.CommandBars("WorksheetMenuBar")

'添加一个新按钮到工具栏菜单

SetbtNew=cbBar.FindControl(Id:

=30007).Controls.Add(msoControlButton,,,,True)

WithbtNew

.OnAction="Sub1"

'设置一个唯一的标签,使自定义的控件在后面容易找到或删除

.Tag="COMAddinTest"

'设置提示文本

.ToolTipText="CallsSub1"

'设置显示在菜单中的标题

.Caption="Sub1"

EndWith

'获取cbevents类中的一个新实例

SetButtonEvent=NewcbEvents

'将之指定给所创建的按钮

SetButtonEvent.cbBtn=btNew

ButtonEvents.AddButtonEvent

'添加另一个按钮

SetbtNew=cbBar.FindControl(Id:

=30007).Controls.Add(msoControlButton,,,,True)

WithbtNew

.OnAction="Sub2"

'设置一个唯一的标签,使自定义的控件在后面容易找到或删除

.Tag="COMAddinTest"

'设置提示文本

.ToolTipText="CallsSub2"

'设置显示在菜单中的标题

.Caption="Sub2"

EndWith

'获取cbevents类中的一个新实例

SetButtonEvent=NewcbEvents

'将之指定给所创建的按钮

SetButtonEvent.cbBtn=btNew

ButtonEvents.AddButtonEvent

EndSub

 

'删除自定义菜单的子程序

PublicSubRemoveToolBarButtons()

DimcbBarAsCommandBar

DimcbCtrAsCommandBarControl

'忽略错误

OnErrorResumeNext

'需要从命令中移除按钮,首先找到该按钮

SetcbBar=xlApp.CommandBars("WorksheetMenuBar")

'使用所设置的标签查找控件

SetcbCtr=cbBar.FindControl(,,"COMAddinTest")

WhileNotcbCtrIsNothing

'删除

cbCtr.Delete

SetcbCtr=cbBar.FindControl(,,"COMAddinTest")

Wend

'恢复占用的存

SetButtonEvents=Nothing

SetButtonEvent=Nothing

EndSub

 

'示例子过程

SubSub1()

MsgBox"Hello!

"

EndSub

 

'示例子过程

SubSub2()

MsgBox"Hi!

"

EndSub

步骤8:

创建类模块处理菜单栏事件。

选择菜单“工程——添加类模块”,将其命名为cbEvents,添加代码:

PublicWithEventscbBtnAsCommandBarButton

PrivateSubcbBtn_Click(ByValCtrlAsOffice.CommandBarButton,CancelDefaultAsBoolean)

'忽略产生的任何错误

OnErrorResumeNext

'检查OnAction属性并执行相应的程序

SelectCaseCtrl.OnAction

Case"Sub1"

Sub1

Case"Sub2"

Sub2

EndSelect

'查找指定给OnAction属性的程序删除Excel

CancelDefault=True

EndSub

步骤9:

生成dll文件。

选择“文件——生成MyAddIn.dll”。

步骤10:

安装ExcelCOM加载项。

(1)注册Dll

Dll文件需要注册到Windows中以便能够运行。

如果是在VB6中生成的Dll文件,将在所创建该加载项的计算机中自动注册。

也可以手工注册。

点击屏幕左下角的“开始”按钮,选择“所有程序——附件——运行”,在出现的“运行”对话框中输入“regsvr32.exe

”。

若要移除或删除dll,先要注销它,即在“运行”对话框中使用regsvr32.exe命令并附加/u参数实现。

(2)在Excel中安装加载项

在VB6中创建该加载项时,在设计器中设置初始化加载行为时选择“Startup”,则在装载Excel时,会自动装载加载项并运行。

如果没有选择“Startup”,则需要手动装载。

单击“开发工具”选项卡“加载项”组中的“COM加载项”,在“COM加载项”对话框中,选取或取消选取所需加载项前的复选框来装载和卸载加载项。

加载上述加载项后,Excel的“加载项”选项卡如下图所示。

Excel2007中的COM加载项

下面的容介绍了Excel2007中COM加载项的一些改变。

(1)介绍

Excel很好地做了一些涉及到向后兼容的工作。

在Excel2000、ExcelXP(2002)或Excel2003中创建的COM加载项(CAI)不需要修改就应该能在Excel2007中正常运行。

然而,在开发应用于不同的Excel版本中的CAIs时,应该记住一些事项。

(2)菜单和命令栏

Excel2007修改了传统的界面,使用功能区(Ribbon)界面替换了菜单和命令栏控制结构。

根据选择可以采用不同的面板组(面板是一组具有相关功能的按钮,在下图1中,选择“开始”,将显示7个面板组:

剪贴板、字体、对齐方式、数字、样式、单元格、编辑,在开发阶段,面板(panels)称作chunks,不知道这些对象现在是否有正式的名称)。

如果选择“开始”,将看到一组面板;如果单击“插入”,则会出现另一组面板。

这对CAI开发意味着什么呢?

意味着创建命令栏、命令栏控件或菜单项的CAI中的任何代码都不再按预料的工作。

仅仅可以通过Excel2007文件格式(xlsx或xlsm)里的Excel文件来定制功能区,在Excel2007文件格式中包含必需的XML代码用于修改功能区。

(一个Excel2007的xlsx或xlsm文件事实上是包含大约20个文本XML数据文件的Zip文件,其中一个文件用于修改功能区。

)Excel2003文件格式(xls)、XLA加载宏、COM加载项都不能修改功能区。

所有的定制,无论是在Excel2003中已有的命令栏中的新菜单项、控件,还是新的命令栏,都将显示在功能区“加载项”中的菜单命令或自定义工具栏命令面板组中。

这将混淆各加载项的命令元素。

下图为功能区“加载项”视图:

在Excel2003和以前的版本中,可能会放置一些菜单项在“工具”菜单中、其它的在“视图”菜单中、以及“数据”菜单中,可能放置菜单项和命令栏按钮在合乎逻辑的位置。

在Excel2007中,所有的定制都被放置在加载项视图中的“菜单命令”和“工具栏命令”面板组中。

(3)加载项

关于COM加载项的联接信息,为Excel指出了可用的CAI,它们存放在系统注册表的两个位置中的其中一个:

HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\AddIns(HKCU)或

HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Excel\AddIns(HKLM)。

在Excel2003和早期版本中,仅仅配置在HKCU中的CAIs显示在COM加载项对话框中,这避免某用户禁用在本机上为所有用户使用的CAI。

在Excel2003和早期版本中,用户仅能装载或卸载配置在HKCU中的CAIs,不能够装载或卸载配置在HKLM中的CAI。

在Excel2007中,所有的加载项都配置在

HKEY_CURRENT_USER\Software\Microsoft\Office\Excel\AddIns

HKEY_LOCAL_MACHINE\Software\Microsoft\Office\Excel\AddIns

在COM加载项对话框中是可见的,这意味着单个的用户可以禁用或卸载本机上所有用户使用的CAIs。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1