之前写过不少VBA来提高工作效率(比如:批量进行设计书格式化等等),但到了Office2007上,VBA就风光不再了,由于安全方面的考虑,VBA需要支持启动宏的Excel(扩展名:xlsm)才能使用。MS推出了VSTO(Visual Studio Tools for Office)来取代VBA,当你熟练掌握VSTO,你会发现它要比VBA开发更快捷——有Office AddIn接口支持,”后台”更强大——可以毫无鸭梨使用.net类库而不是VBA类库,对于Office对象模型来说则没有变化,仍然通过COM对象生成.NET托管对象进行操作,另外还支持 Ribbin 风格的控件。呵呵,是时候更新换代用VSTO取代传统的VBA开发了。
本文将以一个添加CommandBar示例程序介绍VSTO的开发。首先是开发环境的选择:Office 2007 对应的是 Office 2007 PIA Assemblies, VSTO Runtime V3.0 以上。因为 Windows 7 默认安装了 .net 3.5 sp1,所以这里用 VS2010 .net 3.5 开发 VSTO,另外在 .net 3.5 里,C# 仍然没有可选参数可以用(没有可选参数意味着在调用Office COM对象时要写很多System.Reflection.Missing.Value),所以 VB.NET 应该是 .net 3.5 下开发 VSTO 的最佳语言。
工程创建成功后,主要的编码都在 ThisAddIn.vb 里。
查看 ThisAddIn.Designer.vb, 你会发现 Excel Application 这个对象(老熟悉老亲切了),它是我们能调用到 Workbook, WorkSheet 的关键。
ThisAddIn_Startup 会在 AddIn 被 Excel 加载时被调用,因此利用这个事件加载 CommandBar,然后用 AddHandler 为 CommandButton 添加点击的事件处理。(VBA里是通过 Action 属性绑定方法)
运行一下:
点击左上角的 Excel 图标 > 再选择右下的 "Excel 选项" > 点选 "加载项",可以看到 Excel 通过启动时加载 Excel AddIn 的 .vsto 文件来关联 .net 编译的 AddIn dll:
回过头来看看这个CommandButton的图标它使用的是 FaceId 显示的是Excel自带的图标,我们希望换成自定义的图像该怎么做?
自定义图标需要使用 CommandButton.Picture 属性,它需要利用 AxHost.GetIPictureDispFromPicture 方法将 Image 转成 Office 对象可用的stdole.IPictureDisp 对象,但这个方法是 Protected 的,所以这里又做了个类继承与 AxHost,并实现一个静态方法用于转换。
往工程的 Resouces 里加入张 Png 图片: Image1。然后在 AddCommandBar 方法的 With 语句块里加上下面的这一句:
.Picture = CovertImage.Convert(My.Resources.Image1)
哦对了,还要把 Style 修改为带Icon的,比如:msoButtonIconAndCaption
这样一个自定义图标就加上去了。
分享到:
相关推荐
在VSTO中如何利用C#创建EXCEL自定义函数
ackt.Publishing.VSTO.3.0.for.Office.2007.Programming.
vsto安装包打包模板.iss、下载个Inno Setup 编译器直接允许该文件即可,只需改几个名字改为自己的安装包名称即可
VSTO开发Excel工具箱源码(VB.NET版),VB.NET连接SQL serve数据库,远程数据库,异步委托、VB.net画甘特图等等源码,有注释等等,超值
Excel允许我们自定义公式。过去的方法是通过一种叫XLL的特殊DLL来实现。但是XLL不能用托管代码来写。现在,用托管代码如何实现自定义公式呢?很简单,Excel支持一种叫自动化插件的技术,可以使用C#和VB.NET开发。
VSTO二维码带logo-VB.zip
VSTO用VISUALBASIC2010编写EXCEL自定义函数(加载项)[归纳].pdf
VSTO中创建自定义面板 vs2010+Office2007
VSTO2005 SE C# Addin Project
vsto 开发excel源代码 以c#写的
可以根据表头筛选excel数据,并且把筛选好的数据保存到时另一个表中
Holy.Macro.Books.From.VBA.to.VSTO.Is.Excels.New.Engine.Right.for.You
使用VSTO插件将excel数据和图片导出word文档
第11章 创建跨版本兼容的应用程序 第12章 理解和使用Windows API调用 第13章 用户窗体设计与范例 第14章 接口 第15章 VBA错误处理 第16章 VBA调试 第17章 优化VBA的性能 第18章 数据库开发简介 第19章 Access和SQL ...
office 2007最全的所有类库,使用VSTO,c#,VB来开发Office 插件
vsto_Excel_Access可以将数据更新到数据库Access哦
Visual Studio Tools for Office 2007 - 用于VSTO开发的参考书籍
This book is organized into chapters that present the building blocks of VSTO first. Microsoft Excel and its Range objects form the cornerstone of range manipulation across the VSTO suite. For that ...
vsto操作excel的常用语法
http://blog.csdn.net/tx_officedev/article/details/7894677相关资源