VSTO开发中VS2010和Office 2003的问题及解决方案
2012-02-10 16:41
423 查看
因为公司需要,将以前的VSTO项目升级为Net4.0环境,用VS2010开发,结果悲剧了,VS2010的VSTO不支持Office2003,Google了一番,在博客园找到这篇文章,VSTO开发中VS2010和Office 2003的问题,明确说明Office2003已经不被支持,建议升级到Office07或10。不过如果想继续兼容Office2003,文中给出了另外两种方法:使用Extensibility建立插件或者使用COM Shim Wizards辅助托管程序的开发。本文则成功实现Extensibility建立插件的方法,供大家参考。1 添加Extebsibility的引用首先用VS2010新建一个Class Library的项目,Framework设置为4.0,然后添加Extensibility的引用,
现在可以去代码中引用命名空间using Extensibility了。
using System;
using Extensibility;
using System.Runtime.InteropServices;
using Office = Microsoft.Office.Core; 2 设置Guid和ProgId
如下所示设置好Guid和ProgId,这个有点类似Com接口。[GuidAttribute("2752EB47-5BC9-4F67-853C-E7A9E35B0FF9"), ProgId("ATSExcelAddIn.Connect")]
public class Connect : Object, Extensibility.IDTExtensibility2Guid可以用VS的Guid工具辅助生成;ProgId就是程序名+类名称。
3 实现IDTExtensibility2接口让你的Class继承自Object,因为Object是Net所有Type的基类,然后实现IDTExtensibility2接口,主要有以下几个函数:public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)
public void OnAddInsUpdate(ref System.Array custom)
public void OnStartupComplete(ref System.Array custom)
public void OnBeginShutdown(ref System.Array custom)我们的代码主要放在OnConnection函数中,如:public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
applicationObject = application;
addInInstance = addInInst;
this.appExcel = (Excel.Application)application;
System.Diagnostics.Debug.WriteLine("ATSAddIn.OnConnection: App is {0}", this.appExcel.ActiveWorkbook.FullName);
menuBar = this.appExcel.CommandBars.ActiveMenuBar;
menuATS32 =
(Office.CommandBarPopup)menuBar.Controls.Add(Type: Office.MsoControlType.msoControlPopup, Temporary: true);
menuATS32.Caption = "&Mytest";}
4 添加安装项目
因为这是一个Dll项目,不能像VSTO项目那样直接F5加载到Excel中调试,我们需要添加一个Setup项目,然后使用Install来注册到Excel的插件中。
5 安装,预览效果
打开Excel2003,现在已经可以在菜单上看见我们的程序了。
分享完毕,感谢大家的阅读。
现在可以去代码中引用命名空间using Extensibility了。
using System;
using Extensibility;
using System.Runtime.InteropServices;
using Office = Microsoft.Office.Core; 2 设置Guid和ProgId
如下所示设置好Guid和ProgId,这个有点类似Com接口。[GuidAttribute("2752EB47-5BC9-4F67-853C-E7A9E35B0FF9"), ProgId("ATSExcelAddIn.Connect")]
public class Connect : Object, Extensibility.IDTExtensibility2Guid可以用VS的Guid工具辅助生成;ProgId就是程序名+类名称。
3 实现IDTExtensibility2接口让你的Class继承自Object,因为Object是Net所有Type的基类,然后实现IDTExtensibility2接口,主要有以下几个函数:public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
public void OnDisconnection(Extensibility.ext_DisconnectMode disconnectMode, ref System.Array custom)
public void OnAddInsUpdate(ref System.Array custom)
public void OnStartupComplete(ref System.Array custom)
public void OnBeginShutdown(ref System.Array custom)我们的代码主要放在OnConnection函数中,如:public void OnConnection(object application, Extensibility.ext_ConnectMode connectMode, object addInInst, ref System.Array custom)
{
applicationObject = application;
addInInstance = addInInst;
this.appExcel = (Excel.Application)application;
System.Diagnostics.Debug.WriteLine("ATSAddIn.OnConnection: App is {0}", this.appExcel.ActiveWorkbook.FullName);
menuBar = this.appExcel.CommandBars.ActiveMenuBar;
menuATS32 =
(Office.CommandBarPopup)menuBar.Controls.Add(Type: Office.MsoControlType.msoControlPopup, Temporary: true);
menuATS32.Caption = "&Mytest";}
4 添加安装项目
因为这是一个Dll项目,不能像VSTO项目那样直接F5加载到Excel中调试,我们需要添加一个Setup项目,然后使用Install来注册到Excel的插件中。
5 安装,预览效果
打开Excel2003,现在已经可以在菜单上看见我们的程序了。
分享完毕,感谢大家的阅读。
相关文章推荐
- VSTO开发中VS2010和Office 2003的问题
- IIS6.1无法发布vs2010开发的网站若干问题的解决方案
- 【VSTO】Office开发中遇到的兼容性检查问题
- 使用.NET 开发Office 2003解决方案
- [紧急问题和解决方案] 无法打开被"权限管理服务"(RMS)加密的Office 2003文档
- 关于在Office 2010,Visual Studio 2010环境下开发Office 2007解决方案的问题
- 关于在Office 2010,Visual Studio 2010环境下开发Office 2007解决方案的问题
- 【VSTO】Office开发中遇到的兼容性检查问题
- 尝试Office 2003 VSTO的开发、部署
- 尝试Office 2003 VSTO的开发、部署
- net-snmp开发代理常见问题解决方案
- 工程师手记-Exchange Server 2003群集常见问题及解决方案
- Axis1.4开发webService中遇到的问题及解决方案
- 关于android视频播放开发中 播放视频只有声音没有图像的问题解决方案
- office 插件开发 -- 64位系统注册表问题
- 安装VS2010不显示默认开发环境的问题
- 【Android 开发问题】.9.png 图片在Android Studio里报错误 解决方案
- 开发中遇到的git问题总结及解决方案
- java web开发中遇到的问题及解决方案(个人学习日志,持续更新)
- [智能设备]Visual Studio.NET 2003开发智能设备入门问题