基本信息
- 原书名:VSTO for Mere Mortals: A VBA Developer's Guide to Microsoft Office Development Using Visual Studio 2005 Tools for Office
- 原出版社: Addison-Wesley Professional

编辑推荐
本书是为有兴趣把技能迁移到下一代Office开发的VBA开发者写的。你可以得到编写Word 2003、Excel 2003和Outlook 2003托管代码程序的易懂且实用的介绍,还将学到如何用VSTO 2005 SE为最受欢迎的Office 2003和Microsoft Office 2007应用程序创建插件。
作为这方面的专家,作者通过丰富的代码示例来展示受欢迎的VSTO功能,例如智能标记和操作窗格。示例代码也向你演示了如何定制Microsoft Office 2007新的uI功能.包括功能区、自定义任务窗格和Outlook窗体区域。
VBA开发者将会轻松获得:
对托管代码和Visual Studio集成开发环境(IDE)的深入理解。
多个如何使用视图控件,数据绑定和操作窗格为Word 2003和Excel 2003创建文档级别的定制程序的示例。
为Outlook 2003开发插件的全面概览。
用VSTO和VSTO 2005 SE创建的解决方案在安全和部署方面的有用信息。
如何把VBA解决方案迁移到Visual Basic 2005和VSTO的详细说明。
更多关于为Microsoft Office 2007开发VSTO 2005 SE插件定制功能区、自定义任务窗格和Outlook窗体区域的详细信息。
对本书的赞誉:
“真希望第一次接触VSTO和NET Framework时就拥有这本书。它对于那些考虑VSTO以及从Office VBA转到VisualBasic.NET的人都是极具价值的。广泛涉猎的主题为MSDN和其他方面的更加深入的面向开发者的文档提供了一个切入点。”
——Cindy Meister,微软Word MVP
“《VSTO开发者指南》做了一件很好的事,在VBA和VSTO这两个世界之间架起了一座桥。Kathleen和Paul告诉我们.VBA开发者如何在拥有丰富Office知识的同时也能获得VisualStudio的强大、可维护性和安全性。他们成功地写了一本易于接受、易于理解和令人信服的书。”
——KD Hallman,微软开发人员部门主管
“对于想要转到使用VSTO为Office进行.NET开发的VBA开发者,这本书是一个不错的选择。很多示例都展示TVB.NET代码和对应的VBA代码。帮助解释关键概念和用法的区别。”
——Steve Hansen,Officezealot,com,《Mastering Excel2003 Programming with VBA》作者和《Mastering Excel2000Premium Edition》作者之一。
内容简介
计算机书籍
本书是使用VSTO开发MicrosoftOffice的VBA开发者指南。本书重点讲解了托管代码和VisualStudio集成开发环境(IDE),如何使用视图控件、数据绑定和操作窗格为Word 2003和Excel 2003创建文档级别的定制程序,如何为Outlook 2003开发插件,用VSTO和VSTO 2005SE创建的解决方案在安全和部署方面的有用信息,如何把VBA解决方案迁移到VisualBasic2005和VSTO,以及更多关于为Microsoft Office 2007系统开发VSTO 2005 SE插件定制功能区、自定义任务窗格和Outlook窗体区域的详细信息。另外,本书通过丰富的代码示例来展示VSTO功能,使读者更易于理解和掌握。
本书适合VSTO开发人员、VBA开发人员、NET开发人员以及其他开发人员参考。
作译者
目录
译者序
推荐序
序言
前言
第一部分 VSTO概述
第1章 VSTO入门
1.1 本章主题
1.2 什么是VSTO
1.3 为什么用VSTO代替VBA
1.4 VSTO的功能
1.4.1 宿主项和宿主控件
1.4.2 Windows Forrns控件
1.4.3 智能标记
1.4.4 定制任务窗格
1.4.5 在文档中缓存数据
1.4.6 托管插件
1.4.7 安全和部署
1.4.8 功能区支持
1.4.9 增强开发环境
译者序
这么多年来,Microsoft Office的功能爆炸式地增加,但增加的都是普通用户的通用功能,你不会看到为你的问题量身定做的解决方案。比如说,在我翻译这本书的过程中,要无数次插入这类内容:程序清单21引发异常的代码
Private Sub Sheet1_BeforeDoubleClick(ByVal Target As MicrosoftOfficeInteropExcelRange, ByRef Cancel As Boolean) Handles MeBeforeDoubleClick
Dim myString As Object = Nothing
MsgBox(myStringToString)
myString = "This is a test"
MsgBox(myStringToString)
End Sub
我有必要手工输入每一个字符吗?很明显,没有!如果你不在Word上进行二次开发,恐怕你的手就要受罪了。对于这个简单的例子,VBA开发者可能已经开始在大脑里编码了,但如果提出这个需求的是一个NET开发者,那么这口饭就不那么容易吃了。自从某天邂逅了VSTO,在用Microsoft Office时,我变得比以前积极了,遇到问题(像上面提到的那个)时,我也更主动地去思考解决方案,而不是走出阳台无奈地望着天。通过VSTO,我可以把现有的NET技能都用到Office开发上,发挥想象力,把创意融入Office,比如说,为自己量身定做一套翻译辅助工具,你可以在里面包含术语管理,甚至可以尝试实现辅助重构。
本书本身是为VBA开发者写的,作者在书里和你分享他们从VBA转到VSTO时的心得,帮助VBA开发者更平滑地转到VSTO。如果你恰好是一个VBA开发者并且有兴趣加入NET这个大家庭,那么本书就是你的不二之选了。如果你是一个NET开发者,你也不会感到失望,作者在书里以独特的视角和你分享他们对VSTO的理解,而这些都和你平时所接触到的知识形成互补之势。
最后,希望本书能够成为你的好帮手。...
李永伦
2008年于上海
前言
我们相信传统的Office开发者也会对VSTO感兴趣。在加入Microsoft之前,我们俩都是VBA开发者,定制Office应用程序,并且我们非常有兴趣了解托管代码。在这方面,我们不认为我们是唯一的。有上百万VBA开发者,许多人都有兴趣学习下一代Office开发。现在的VSTO图书和文档通常都不是为VBA开发者写的,它假设开发者熟悉Visual Studio、面向对象编程和NET Framework。这就不难理解为什么它把重点更多地放在VSTO的功能和如何使用笨重的Office对象模型。
我们想为VBA开发者写一本书。虽然你可能不熟悉NET编程,但你有一个重要的优势:Office对象模型的知识。作为一个Office开发者,你很可能非常熟悉Office应用程序,在操作Office对象模型方面也有丰富的经验。我们认为学习托管代码的最佳环境是你已经熟悉的Office开发环境。
VSTO把Office开发带到NET的世界,和VBA相比,它既有优点也有缺点。使用VSTO,你可以更好地定制Word、Excel和Outlook,例如,创建自定义任务窗格、向文档添加智能标记和把文档上的对象绑定到数据源。使用VSTO 2005 SE,你可以为6个Office应用程序创建插件、定制新的2007 Microsoft Office系统的功能区和创建应用程序级别的自定义任务窗格。
我们有幸和为VSTO进行设计、编码、测试和写文档的人一起工作,并从他们那里学到了很多。我们得到了内部人士对VSTO的看法,我们希望以一种易懂和有趣的方式把这些信息传递给你。——Kathleen McGrath和Paul Stubbs
言
世界上有上百万Microsoft Office开发者。大多数创建Visual Basic for Application(VBA)解决方案的人都不会把他们自己看作Office开发者,但他们是。事实上,如果你使用VBA定制Office文档,那么你就在使用其中一个最受欢迎的开发平台了。
你可能已经开始了开发生涯,在Word或者Excel里录制宏来自动化重复的任务。不久之后,你开始调整你的宏,让它们按照你所需的方式工作。你或许有过这样的经历,由于准时为老板创建了重要的文档,成为了办公室的英雄。如果你和很多人一样,那么你已经深入到VBA编码了。你现在从零开始创建VBA项目,代码的行数也激增。你甚至可能已经发现VBA的一些局限性,从而妨碍你创建真正想要的解决方案。
你或许已经听说Microsoft在向VBA语言添加新功能上并不积极。这并不是说Microsoft将会停止支持VBA,而是说不会增加新的功能,例如Web服务、XML和其他诸如代码段的功能。但是,如果你使用Visual Studio 2005 Tools for Office(VSTO)和Visual Basic,你就可以利用这些新功能。
你可能已经开始转到使用VSTO开发Office并且想了解更多内容。或许你现在只是想试一下VSTO,然后看看使用托管代码能为解决方案带来哪些增强。
简而言之,使用VSTO和Visual Basic 2005能使工作效率到达一个新的层次,而无论你在到达这个新的层次的路上走了多远,本书都会帮助你达到那个层次。
本书面向的读者群
我们是为VBA开发者写本书的。“VBA开发者”是一个很宽泛的术语,它包括任何录制过简单的宏的人和创建企业级解决方案的专业开发者。本书是为那些人而写的,从只懂很少VBA编程的初级VBA开发者到已经使用Visual Basic 60或者Visual Basic 2005的高端开发者。
这是一本关于从VBA转到Visual Basic 2005的书。你会学到如何用Visual Basic 2005创建很好的Office解决方案,Visual Basic 2005将是你认为可以使用的最好的Office开发语言。
本书的目的
我们俩有使用VBA创建Office解决方案的经验,我们认为有必要帮助其他人转向使用Visual Studio 2005和VSTO进行托管编程。和VSTO团队一起工作使我们对VSTO和Office开发有了更深的理解。我们和很多VBA开发者谈过,他们的问题是如何把他们用VBA写的代码翻译成VSTO和Visual Basic 2005。多年来,我们开始看到VBA开发者所碰到的问题的模式。我们决定写这本书来满足这些需要。
阅读本书的方法
本书要按章节顺序阅读。每章都是基于前一章的概念的。这些概念的复杂度也随每章增长。..
一开始,我们向你示范一些基本的东西,例如创建一个项目并运行它。如果你对VSTO或者Visual Basic 2005不熟悉,我们推荐你从头开始并按你的方式读下去。如果你熟悉Office和NET编程,你可以直接跳到感兴趣的章节。
我们还在附录里包含了高级示例,在你熟悉VSTO编程之后可以使用。附录A示范了如何创建XML代码段。这些代码段允许你向解决方案插入代码,使创建应用程序变得更快更容易。附录B示范了一个为Outlook Inspector创建工具栏的方法。
序言
如果你熟悉VBA并且考虑将要踏入使用Visual Basic 2005和Visual Studio Tools for Office(VSTO)的Office开发世界,不要再等了,这就是你要找的书。.
Kathleen和Paul在本书里用独特的方法为VBA开发者讲述VSTO。从VBA转到Visual Basic 2005和VSTO时,有很多新的东西需要学习,让我们面对吧。Visual Basic语言的改变比你想要的多,而且也去掉了一些熟悉的原有的语言构造。幸运的是,本书描述了当你从VBA开发转到Visual Basic 2005开发时将会遇到的主要改变。VSTO的开发环境也和VBA的开发环境很不同。再有,本书给你指出VSTO的新功能并帮助你理解如何把你辛苦得到的VBA技能迁移到基于Visual Studio的新开发环境。
最后,从VBA转到VSTO是否值得?我想你会发现这是值得的。VSTO提供了更丰富的环境,还有很多强大的功能可以在你的Office开发项目里使用,最终使你事半功倍。这难道不是你想要的吗?
Kathleen和Paul是引领你进入VSTO新世界的最好向导。Kathleen在VSTO开发期间是一个技术作家,换句话说,她在我们开发VSTO的时候就开始写这方面的东西了。我发现写作是验证设计的最好方法,事实也是如此。当Kathleen为VSTO写作时,她会走进我的办公室,指出很多令人迷惑或者错误的东西。最终,她使VSTO变得更好。她从一个独特的角度去理解VSTO的功能并写下这方面的东西。
我还要提及Kathleen收集整理的关于VSTO的非常棒的录像。如果你仍在考虑是否在自己的项目里试一下VSTO,请看一些她的录像,以及她作为VSTO组博客的贡献者为社区做的其他贡献:
http://blogsmsdncom/vsto2/
在这本书里,你不仅得到Kathleen的智慧,也得到Paul的智慧。Paul是VSTO的早期用户之一,他通过参与VSTO产品早期的软件设计评审协助指导Microsoft。因为他的帮助很大,所以VSTO组雇用了他。即使在他加入Microsoft之后,他仍继续发挥VSTO“第一批用户”这个角色的作用。如果你搜索论坛和新闻组,就会发现Paul经常回复开发者贴出的VSTO难题。
正如你所期望的,Paul和Kathleen都有很好的博客。你可以去看看:
http://blogsmsdncom/kathleen/
http://blogsmsdncom/pstubbs/
作为本书的早期审阅者,我喜欢这种让VBA开发者感到易懂和实用的方式。你不会在本书里找到任何C#代码,这很好。Visual Basic是你可以选择的用于Office开发的最佳语言,因为Visual Basic伴随着Office一起成长,它的功能让Office对象模型变得更加易用。另外,我发现本书有很多很好的提示和技巧,让你获得最佳的VSTO体验,比如说,Kathleen和Paul告诉你如何设置你的环境,使调试更加容易。
最后,这是第一本介绍VSTO 2005 SE的书,你现在可以为更多Office应用程序开发,包括Office 2007。另外,我还想透露一下,我们已经在开发用于Office 2007的下一代VSTO,我们会继续努力让VSTO变得简单和强大。VSTO会延续下去,而本书则会帮助VBA开发者实现转换。
Eric Carter
Microsoft公司
VSTO开发经理
序言
Visual Studio Tools for Office(VSTO)的目标受众是“专业开发者”。这个术语有多重含义,而我们听到的最受认可的定义是“通过写代码获取报酬的人”。换句话说,这是他的主业。他不是部门开发者,比如说,把写Excel宏作为会计任务的一部分的会计人员,或者定制Word来增加生产力的办公人员。相反,他是一个有兴趣把Microsoft Office作为开发平台的NET开发者。..
我们相信传统的Office开发者也会对VSTO感兴趣。在加入Microsoft之前,我们俩都是VBA开发者,定制Office应用程序,并且我们非常有兴趣了解托管代码。在这方面,我们不认为我们是唯一的。有上百万VBA开发者,许多人都有兴趣学习下一代Office开发。现在的VSTO图书和文档通常都不是为VBA开发者写的,它假设开发者熟悉Visual Studio、面向对象编程和NET Framework。这就不难理解为什么它把重点更多地放在VSTO的功能和如何使用笨重的Office对象模型。
媒体评论
——Cindy Meister, 微软 Word MVP
“《VSTO开发者指南》做了一件很好的事,在VBA和VSTO这两个世界之间架起了一座桥。Kathleen和Paul告诉我们,VBA开发者如何在拥有丰富Office知识的同时也能获得Visual Studio的强大、可维护性和安全性。他们成功地写了一本易于接受、易于理解和令人信服的书。”
——KD Hallman, 微软开发人员部门主管
“对于想要转到使用VSTO为Office进行.NET开发的VBA开发者,这本书是一个不错的选择。很多示例都展示了VB.NET代码和对应的VBA代码,帮助解释关键概念和用法的区别。”
——Steve Hansen, OfficeZealot.com《Mastering Excel 2003 Programming with VBA》作者
和《Mastering Excel 2000 Premium Edition》作者之一
“真希望第一次接触VSTO和NET Framework时就拥有本书。它对于那些考虑VSTO以及从Office VBA转到Visual BasicNET的人都是极具价值的。广泛的主题为MSDN和其他方面的更加深入的面向开发者的文档提供了一个切入点。”
——Cindy Meister,MS Word MVP
“本书做了一件很好的事,在VBA和VSTO两个世界之间架起了一座桥。Kathleen和Paul告诉我们,VBA开发者如何在拥有丰富的Office知识的同时也能获得Visual Studio的强大功能,如可维护性和安全性。他们成功地写了一本容易接受、易于理解和令人信服的书。”
——KD Hallman,总经理,Microsoft,Developer Division
“对于想要使用Visual Studio Tools for Office为Office进行NET开发的VBA开发者,本书是一个不错的选择。很多示例都展示了VBNET代码和对应的VBA代码,帮助解释关键概念和用法的区别。”
——Steve Hansen,OfficeZealotcom,
《Mastering Excel 2003 Programming with VBA》的作者
《Mastering Excel 2000 Premium Edition》的作者之一..
“ Visual Studio 2005 Tools for Office是构建托管Office应用程序的途径。如果你正在从VBA开发转到托管代码开发,本书会告诉你如何去做。”
——Ken Getz,资深顾问,MCW Technologies,LLC
“对于有兴趣使用Visual Studio和NET的强大功能进行Office编程的VBA开发者,强烈推荐本书。”
——Mei Liang,测试软件设计工程师,Microsoft
“ Kathleen McGrath在本书里给出了很多有一定深度的代码示例,以一种易于理解的方式演示VSTO。本书的内容包括了从简单的如何实现到高级功能。我从本书中学到了很多。”
书摘
第1章 VSTO入门
1.4VSTO的功能
VSTO提供的编程模型扩展了Word和Excel里的一些公共对象,例如书签和范围。这些对象现在具备了数据绑定的能力。比如说,你可以把数据库里的字段绑定到Excel里的单元格。使用数据绑定,你可以让数据自动填充到文档的对应位置,并且根据用户的输入更新数据库里的数据。
VSTO编程模型背后的理念是把数据及其表现形式分离开来。你现在可以直接访问存储在数据源里的数据,而不用在文档里查找显示这些数据的对象。数据源可以是数据库、XML文件,甚至是文本文件。
数据绑定对于服务器端编程尤其有用。VSTO使你可以在文档里储存能被外部应用程序访问(无需打开该文档)的数据。若要做到这点,你可以通过把数据储存在XML数据岛或者数据缓存(data cache)里。如果你把数据储存在数据缓存里,那么你可以在服务器上访问数据缓存,而无需打开文档或者在服务器上安装Word或Excel。
VSTO扩展对象的另一种做法是添加本地对象里没有的事件。比如说,你现在可以对工作表单元格的更改事件编程,而不用遍历对象模型并编写许多行代码找出哪个单元格发生了改变。当你在文档或者工作表上添加这些扩展对象时,VSTO把它们创建成一级•,NET对象,你可以直接对它们编程。这些对象称为宿主控件(host contr01),而你添加宿主控件的文档或者工作表则称为宿主项(host item)。
使用VSTO 2005 SE,你可以为Office 2003和2007 Microsoft Office System创建应用程序级别的插件。VSTO 2005 SE还支持定制Office 2007的新用户界面,包括功能区、自定义任务窗格和Outlook窗体区域。
1.4.1 宿主项和宿主控件
正如前面所提到的那样,宿主项是一个表示Office对象模型人口点的类。默认情况下,当你创建1个Excel解决方案时,将会创建4个Excel的宿主项:Workbook、Sheetl、Sheet2和sheet3。如果你在设计时添加更多工作表,那些工作表将被创建为宿主项。宿主项通过添加数据绑定的能力和提供额外的事件来扩展本地Office文档。
宿主项是word或者Excel的设计图面(design surface),担当控件容器的角色,这是看待宿主项的一个角度。就像你在VBA里把控件添加到UserForm上一样,你可以把Window Forms控件和宿主控件添加到宿主项上。这条规则的一个例外是工作簿宿主项。工作簿可以包含组件(component),但不能包含控件。
……