本文原创,转载请注明出处:http://blog.youkuaiyun.com/banket004
通过参考网上的文章,再加上自己的摸索,走了不少弯路,终于用VS2010开发出MS Office 2007的插件.特写此文以作备忘.(记性太差,之前开发过一次,后来再开发又忘了怎么用^ _^)
下面以开发Excel插件为例,其他office插件开发过程类似.
如果不需要支持MFC,可参考此文章http://blogs.msdn.com/b/jensenh/archive/2006/12/08/using-ribbonx-with-c-and-atl.aspx的方法,开发更简便,本人已实验过.
首先创建一个支持MFC的ATL DLL解决方案,界面如下:
在"Allow merging of proxy/stub code"和"Support MFC"两个选项前打勾,然后点击"Finish",到此最原始的解决方案已经建成.接着通过类向导给项目增加一个"ATL Simple Object"类.除了输入类名之外,"ISupportErrorInfo"选项可选可不选,其他默认即可,如下图:
接下来在上面创建的ATL类Cexceladdin中实现库"Microsoft Add-In Designer<1.0>"中的"_IDTExtensibility2"接口,后面需要用到此接口中的"OnConnection","OnDisconnection","OnAddInsUpdate","OnStartupComplete"和"OnBeginShutdown"方法.这四个方法是宿主(Office软件)运行时加载和卸载插件相关的.
以上操作用"Implement Interface Wizard"即可完成,如下图:
编译一下,没有什么错误.到这里还不能在Excel软件的界面看到插件,还需要实现下面另一个接口,也是我花费最多时间摸索的地方.
还是在类Cexceladdin中实现接口,通过接口实现向导,选择"Microsoft Office 12.0 Object Library<2.4> "库(office 2007版本对应的就是12),添加"IRibbonExtensibility"接口.如下图:
添加好接口之后,再编译,会出现以下错误信息:
1>d:\my documents\visual studio 2010\projects\2007exceladdin\2007exceladdin\stdafx.h(41): warning C4278: 'RGB': identifier in type library 'C:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL' is already a macro; use the 'rena