开发工具:VS2013 :
vs2013 已经将 创建Excel的com加载项的方式 的导航删除掉了,所以只能新建一个ATL项目并自己添加实现接口。在MSDN上有一篇文章为 Outlook 2010 构建 C++ 加载项非常详细的说明了这个过程,这里只做简要摘录并说明一下在某些步骤可能遇到的问题及我如何解决的。
一.创建ATL项目
在向导中选择动态库即可 其他默认。
2、为该项目添加一个类,从ATL栏中选择ATL简单对象。这里有一个惯例,此类一般命名为CConnect。填一下ProgID,在注册表中注册本加载 项时需要使用。(项目-》右键-》添加》类-》ATL简单对象)
然后点击完成即可。
3.为CConnect类实现接口。选择Microsoft Add-In Designer<1.0>类型库中的_IDTExtensibility2接口,此为所有Office加载项都必须实现的接口。将继承声明中的&LIBID_AddInDesignerObjects改为&__uuidof(__AddInDesignerObjects),将此接口的5个方法的返回值都改为S_OK。方法:在项目导航中选择类视图,找到CConnect类》右键-》添加-》实现接口:
在弹出的对话框中选择注册表, 然后在列表中找到 添加_IDTExtensibility2
注意:此时有可能出现 错误,只需将CConnect类中的改为 然后重新按上步骤添加
最后将&LIBID_AddInDesignerObjects改为&__uuidof(__AddInDesignerObjects)。
4、添加注册表文件。在Connect.rgs文件中,追加注册表信息,可以从MSDN中直接复制的,但需注意要将Outlook改为Excel,并将NativeAddin.Connect改为自己命名的ProgID。
HKCU
{
NoRemove Software
{
NoRemove Microsoft
{
NoRemove Office
{
NoRemove Outlook
{
NoRemove Addins
{
NativeAddin.Connect
{
val Description = s 'Sample Addin'
val FriendlyName = s 'Sample Addin'
val LoadBehavior = d 3
}
}
}
}
}
}
}
5、设置调试。将调试的命令属性设为预启动的Excel,则在调试项目时会自动启动Excel并加载本加载项。
以上步骤完成后,即可完成项目创建。我们可以在OnConnection函数中增加一个弹窗,用以证明加载项的确已被成功加载。调试程序时,可能会出现注册表写入失败,因为WIN7的权限设置问题,需要在DllRegisterServer和DllUnregisterServer函数的最上方添加一行代码ATL::AtlSetPerUserRegistration(true);
现在一个excel的最基本的插件就完成了。运行看看OnConnection的弹窗是否出现了。