看过一个程序,运行后在excel中添加了一个菜单项和一个工具栏,能实现一些自己定义的功能。我想知道,这种能够修改excel的程序是怎样编写的?谢谢各位。

解决方案 »

  1.   


    office中内部com插件的操作,有公共接口内部COM插件必须实现一个_IDTExtensibility2派发接口,_IDTExtensibility2派发接口被定义在MSADDin Designer类型库(MSADDNDR.dll/MSADDNDR.tlb)中,通常位于<盘符>/Program Files/Common Files/Designer下。_IDTExtensibility2接口中必须实现下面五个接口函数(一般只需编写OnConnection和OnDisconnection中代码),分别如下:
    1. OnConnection: 装载插件到内存时处理(可以通过自动化在程序启动时自动装载插件)。
    2. OnDisconnection: 从内存中缷载插件时处理。
    3. OnAddinsUpdate: COM插件改变时处理。
    4. OnStartupComplete: 当应用程序启动时插件刚装载完成时处理。
    5. OnBeginShutdown: 当应用程序关闭时插件刚缷载完成时处理。注册插件
    只有在正确注册了相应应用程序的内部COM插件时,才能被其应用程序加载上。需要在注册表中创建以下键值:
    HKEY_CURRENT_USER\Software\Microsoft\Office\<TheOfficeApp>\Addins\<ProgID>
    其中,TheOfficeApp表示相应程序名,如:Word、Outlook等,ProgID表示内部COM插件程序的唯一标识符的字符串表示形式,如:Outlook2000Addin.Addin等。ProgID键值下主要创建以下四个键值:
    1. FriendlyName: 字符串类型,插件的名称,将在相应程序的COM加载对话框中看到。
    2. Description: 字符串类型,插件的描述信息。
    3. LoadBehavior: DWORD类型,决定插件将以什么形式被装载。当其值为0x03时,为应用程序装载时被自动装载(一般使用此值)、当其值为0x08时,为用户控制激活装载。
    4. CommandLineSafe: DWORD类型,命令行方式,可以设置为0x01(真)或0x00(假)。
    其它键值的完整描述可参看最新MSDN。具体例子参见以下文章
    http://www.vckbase.com/document/viewdoc/?id=648看这个链接,里面有详细的解释,可以仿照写一下