vb word插件

Vb word插件<?XML:NAMESPACE PREFIX = O />

你也许曾在Office2000下的Word2000Access2000Excel2000PowerPoint2000等软件中的工具条或菜单条资源中,看到一些其它软件加入的新的自定义工具条按钮或菜单条,当点击它们时,会有其不同的响应发生。下面,让我们也来实现这些功能,需要说明的是,在这里我们不用VB/VBA来实现它,而是用VC6中所带ATL(活动模板库)3.0来开发具有这种效果的Office2000内部COM插件。在Office2000中,不管是Word2000Access2000Excel120000PowerPoint2000还是Outlook2000等,它们COM插件的编程方法及步骤都是极其相似的(除注册表中键值及导入相应类型库不同外)

基础知识
一个Office2000下的内部COM插件必须实现一个_IDTExtensibility2派发接口,_IDTExtensibility2派发接口被定义在MSADDin Designer类型库(MSADDNDR.dll/MSADDNDR.tlb)中,通常位于<盘符>/Program Files/Common Files/Designer下。_IDTExtensibility2接口中必须实现下面五个接口函数(一般只需编写OnConnectionOnDisconnection中代码),分别如下:
1. OnConnection:
装载插件到内存时处理(可以通过自动化在程序启动时自动装载插件)
2. OnDisconnection:
从内存中缷载插件时处理。
3. OnAddinsUpdate: COM
插件改变时处理。
4. OnStartupComplete:
当应用程序启动时插件刚装载完成时处理。
5. OnBeginShutdown:
当应用程序关闭时插件刚缷载完成时处理。

注册插件
只有在正确注册了相应应用程序的内部COM插件时,才能被其应用程序加载上。需要在注册表中创建以下键值:
HKEY_CURRENT_USER/Software/Microsoft/Office/<TheOfficeApp>/Addins/<ProgID>
其中,TheOfficeApp表示相应程序名,如:WordOutlook等,ProgID表示内部COM插件程序的唯一标识符的字符串表示形式,如:Outlook2000Addin.Addin等。

ProgID键值下主要创建以下四个键值:
1. FriendlyName:
字符串类型,插件的名称,将在相应程序的COM加载对话框中看到。
2. Description:
字符串类型,插件的描述信息。
3. LoadBehavior: DWORD
类型,决定插件将以什么形式被装载。当其值为0x03时,为应用程序装载时被自动装载(一般使用此值)、当其值为0x08时,为用户控制激活装载。
4. CommandLineSafe: DWORD
类型,命令行方式,可以设置为0x01()0x00()

 

 

Office应用程序中,尽管菜单和工具栏按钮看上去不太一样,但实质上它们是相同类型的对象。

 

CommandBars集合包含程序中的所有命令条,如:工具条和菜单条。

 

每一个CommandBars集合都有一个CommandBar对象和它对应,CommandBar 对象可以包含其它的 CommandBar 对象,这些对象是作为按钮或菜单命令来用的。

 

每一个CommandBar都将通过CommandBarControls 对象被引用,CommandBarControls又可以包含一组CommandBarControl对象。

 

每一个CommandBarControl可以包含一个CommandBar对象,并可以通过它来存取控件属性。

 

每一个CommandBarControl对象,实际是对应CommandBarControls中的控件集合。

 

 

CommandBarControl可以有三种表现形式:


弹出式(CommandBarPopup):相当于菜单条的一个菜单项。
组合框(CommandBarComboBox):类似于工具条中组合框控件。它包括一个工具栏和紧接着工具栏的一个下拉箭头。单击该按钮,将显示出更多的带图标的菜单命令。
按钮(CommandBarButton):相当于标准的工具栏按钮,即带有图标的按钮。


在下面的示例程序中,我们将在Word 2K中新建一个工具条并在其上添加二个按钮,并且在其菜单工具中新建一个菜单条,这些操作都可以在OnConnection接口函数中完成。

 

 

1,添加引用

       Microsoft  Add-In  Designer

       Microsoft  Office  11.0 Object Library

       Microsoft Word 11.0 Object Library

 

 

 

 2,实现IDTExtensibility2接口

Implements  IDTExtensibility2

 

 3,实现函数,一共5个接口函数

       OnConnection 函数实现下载代码,实现得功能,插入一个工具条,上面有一个按钮,单击会显示对话框

 

Dim WithEvents spCmdButton As Office.CommandBarButton

上面这一句,在通用处声明

 

Dim spApp As Word.Application

 

//获取菜单,工具条集合

       Dim spCmdBars As Office.CommandBars

 

         Dim spNewCmdBar As Office.CommandBar

 

    Dim spbarcontrols As Office.CommandBarControls

   

    Dim spNewBar As Office.CommandBarControl

          

    Set spApp = Application

   

    Set spCmdBars = spApp.CommandBars

   

    Set spNewCmdBar = spCmdBars.Add("王永胜", 1)

   

    Set spbarcontrols = spNewCmdBar.Controls

   

  

   

    Set spNewBar = spbarcontrols.Add(msoControlButton, 1)

   

 

    Set spCmdButton = spNewBar

   

   

    spCmdButton.Style = MsoButtonStyle.msoButtonCaption

   

spCmdButton.Visible = True

 

spCmdButton.Enabled = True

 

spCmdButton.ToolTipText = "王永胜"

 

    spCmdButton.Caption = "按钮"

   

    spNewBar.Visible = True

   

按钮事件得实现函数

 

Private Sub spCmdButton_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)

    MsgBox "ddf"

End Sub

 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章